title: Uart串口
tags: ARM date: 2018-10-20 16:38:28 ---Uart串口
和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的,简单的应用测试可以先关掉中断.从下图看到,usb转串口连接到COM1
,COM1
是内部的Uart0
程序初始化
UART0 | |
---|---|
RX0 | GPH3 |
TX0 | GPH2 |
//init uartvoid Uart0_init(){ //配置GPIO 复用为uart //配置相应的 GPHCON 为10 串口 // 也就是 _BIT5,BIT7 置1 BIT4,BIT6清零 GPHCON &=~(_BIT4|_BIT5|_BIT6|_BIT7); GPHCON |=(_BIT5|_BIT7); //设置上拉 GPHUP &=~(_BIT2|_BIT3); //禁止红外,8N1 ULCON0=(_BIT0|_BIT1); // PCLK(50M),中断/查询模式打开 // FCLK : HCLK : PCLK = 400m : 100m : 50m UCON0 = (0x01)|(0x01<<2); UBRDIV0=26;//CLK/(baund*16)-1 //UFCON0 FIFO 不使用 //UMCON0 不使用流控 //UTRSTAT0 中断标志位 //UERSTAT0 错误标志 //UFSTAT0 FIFO标志 //UMSTAT0 模式配置,CTS //UTXH0、URXH0 BUF //这里要清除标志位,不然好像有点问题 UTRSTAT0=0x06;}int putchar(int c){ while(!(UTRSTAT0&_BIT2)); // UTXH0 被定义为uint,这里应该是char类型的地址0x50000023(B) UTXH0 = (unsigned char )c;}int getchar(void){ while(!(UTRSTAT0&_BIT0)); return URXH0;}int puts(const char *s){ while(*s) { putchar(*s); s++; }}