参考视频:https://www.bilibili.com/video/BV14o4y1Y7A1?p=4&vd_source=432ba293ecfc949a4174ab91ccc526d6 寄存器描述来自Exynos 4412 User's Manual uart寄存器需要关注的点有: 1、如何设置帧格式? 2、如何设置uart接收和发送模式? 3、如何设置uart的波特率? 4、发送和接收都是哪些寄存器,如何查看是否发送完毕? 设置帧格式寄存器如下: ULCONn寄存器: bit[1:0]设置数据宽度,这里设置为b'11,表示8bits数据位 bit[2]设置停止位,这里设置为b'0,表示1bit停止位 bit[5:3]设置奇偶校验类型,不设置奇偶校验,就设置为0x0 bit[6]选择正常模式或红外模式,这里选择正常模式 则该寄存器设置为0x000111 设置uart接收和发送模式: UCONn寄存器: bit[1:0]设置接收模式,这里设置为0x01,表示轮询模式 bit[3:2]设置发送模式,这里设置为0x01,表示轮询模式 设置波特率: UBRDIVn和UFRACVALn两个寄存器共同决定波特率大小,上图也有计算方法说明,计算如下: wclk为100M,则DIV_VAL= 100000000/(112500 x 16) - 1 = 53.25 0.25 x 16 = 4 则:UBRDIVn设置为53,UFRACVALn设置为4 发送寄存器和接受寄存器: 状态寄存器UTRSTATn: UTRSTATn寄存器: bit[0]表示接受数据buffer是否已准备好 bit[1]表示发送数据buffer是否为空 示例代码:
1 #include "exynos_4412.h" 2 3 4 /*串口控制器号初始化*/ 5 void UART_Init(void) 6 { 7 /*1.将GPA1_0和GPA1_1设置成UART2的接收和发送引脚 GPA1CON[7:0],设置引脚功能*/ 8 GPA1.CON = GPA1.CON & (~(0xFF << 0)) | (0x22 << 0); 9 10 /*2.设置UART2的帧格式 8位数据位 1位停止位 无校验 正常模式 ULCON2[6:0]*/ 11 UART2.ULCON2 = UART2.ULCON2 & (~(0x7F << 0)) | (0x3 << 0); 12 13 /*3.设置UART2的接收和发送模式为轮询模式 UCON2[3:0]*/ 14 UART2.UCON2 = UART2.UCON2 & (~(0xF << 0)) | (0x5 << 0); 15 16 /*4.设置UART2的波特率为115200 UBRDIV2/UFRACVAL2*/ 17 UART2.UBRDIV2 = 53; 18 UART2.UFRACVAL2 = 4; 19 } 20 21 /*对外发送一个字节数据*/ 22 void UART_Send_Byte(char Dat) 23 { 24 /*等待发送寄存器为空,即上一个数据已经发送完成 UTRSTAT2[1]*/ 25 while(!(UART2.UTRSTAT2 & (1 << 1))); 26 27 /*将要发送的数据写入发送寄存器 UTXH2*/ 28 UART2.UTXH2 = Dat; 29 } 30 31 /*接受外部发来的数据*/ 32 char UART_Rec_Byte(void) 33 { 34 char Dat = 0; 35 36 /*判断接收寄存器是否接收到了数据 UTRSTAT2[0]*/ 37 if(UART2.UTRSTAT2 & 1) { 38 39 /*从接收寄存器读取接收到的数据 URXH2*/ 40 Dat = UART2.URXH2; 41 return Dat; 42 43 } else { 44 return 0; 45 } 46 47 } 48 49 void UART_Send_Str(char *pstr) { 50 while(* pstr != '\0') { 51 UART_Send_Byte(*pstr++); 52 } 53 } 54 55 int main() 56 { 57 char RecDat = 0; 58 59 UART_Init(); 60 61 while(1) 62 { 63 RecDat = UART_Rec_Byte(); 64 if(RecDat == 0) { 65 } 66 else { 67 RecDat = RecDat + 1; 68 UART_Send_Byte(RecDat); 69 } 70 71 72 /*通过串口输出字符串*/ 73 UART_Send_Str("Hello world!"); 74 75 76 77 } 78 return 0; 79 }标签:Uart,模式,发送,uart,Controller,Exynos4412,设置,寄存器,bit From: https://www.cnblogs.com/lethe1203/p/18078695