Qt210uart学习笔记
来源:互联网 发布:windows 运行指令 编辑:程序博客网 时间:2024/06/06 01:25
Qt210uart学习笔记
1.学习串口思路
1.把相关引脚设为RXD和TXD,2.设置查询或中断模式和时钟源3.设置数据位和校验位4.配置波特率5.接受和发送数据
2.看原理图知道串口与GPAO 寄存器有关
所以设置对应GPIO用于UART0
GPA0CON |= 0x22;
3.设置查询或中断模式和时钟源
* Receive Mode [1:0]:1 =接收采用查询或者中断模式,* Transmit Mode[3:2]:1 =发送采用查询或者中断模式,* bit[6]:1 =产生错误中断,* bit[10]:0 =时钟源为PCLK(这是PSYS Domain的)约66Mhz在下图可看出
UCON0 = (1<<6)|(1<<2)|(1<<0);
4.设置数据位和校验位
bit[1:0]:0x3 = 8位数据位, 1位停止位,无校验,正常模式
ULCON0 |= (0x3<<0);
5.配置波特率,相关寄存器有UBRDIV0和UDIVSLOT0。
DIV_VAL = (PCLK / (bps x 16)) −1可以计算出UBRDIV0
其中PCLK如下图得到
PCLK=667mhz/5/ 2
UBRDIV0=667Mhz/5/ 2/115200/16 -1(UBRDIV0等于整数部分35,小数部分0.187*16=2则查下表)
得出UDIVSLOT0=0x0808
#define GPA0CON (*(volatile unsigned int *)0xE0200000) #define ULCON0 (*(volatile unsigned int *)0xE2900000) #define UCON0 (*(volatile unsigned int *)0xE2900004) #define UTRSTAT0 (*(volatile unsigned int *)0xE2900010)#define UTXH0 (*(volatile unsigned char *)0xE2900020) #define URXH0 (*(volatile unsigned char *)0xE2900024) #define UBRDIV0 (*(volatile unsigned int *)0xE2900028) #define UDIVSLOT0 (*(volatile unsigned int *)0xE290002C)void uart_init(void){/* 设置对应GPIO用于UART0 */GPA0CON |= 0x22;/* 设置UART0寄存器 *//* bit[1:0]:0x3 = 8位数据位 * 其他位默认,即1位停止位,无校验,正常模式 */ULCON0 |= (0x3<<0);/* * Receive Mode [1:0]:1 = 接收采用查询或者中断模式 * Transmit Mode[3:2]:1 = 发送采用查询或者中断模式 * bit[6]:1 = 产生错误中断 * bit[10]:0 = 时钟源为PCLK */UCON0 = (1<<6)|(1<<2)|(1<<0);/* 设置波特率(详细信息请参考手册或者学习日记) * DIV_VAL = UBRDIVn + (num of 1's in UDIVSLOTn)/16 * DIV_VAL = (PCLK / (bps x 16)) - 1 */UBRDIV0 = 0x23;UDIVSLOT0 = 0x808;return;}char uart_getchar(void){char c;/* 查询状态寄存器,直到有有效数据 */while (!(UTRSTAT0 & (1<<0)));c = URXH0; /* 读取接收寄存器的值 */return c;}void uart_putchar(char c){/* 查询状态寄存器,直到发送缓存为空 */while (!(UTRSTAT0 & (1<<2)));UTXH0 = c; /* 写入发送寄存器 */return;}
QQ:790706648 4M小水管
- Qt210uart学习笔记
- 学习笔记?
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- 学习笔记
- GIS坐标系与地图投影
- 如何增加你的生产力
- Log4net 框架系列:log4net日志文件在asp.net中的应用实例-记录系统错误
- 《高质量程序设计指南——C/C++》第6章 C/C++函数设计基础
- TCP协议三次握手过程分析
- Qt210uart学习笔记
- 0x77c13869指令的0x00000080内存。该内存不能为read
- TCP三次握手/四次挥手详解
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
- 守护进程编程步骤
- 中国现役军衔制
- 性能瓶颈
- 设计模式原则
- Log4net源码分析(一)