第十一课 (2)用UART实现自定义putchar、getchar、puts函数 |
您所在的位置:网站首页 › 英国领事馆签证中心上海电话号码 › 第十一课 (2)用UART实现自定义putchar、getchar、puts函数 |
一、需要配置的寄存器
1、 设置引脚用于串口
别忘了还需要把上拉电阻使能上拉 2、设置波特率P338 UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1 UART clock 从哪来? 设置UCON0寄存器的Clock Selection [11:10] = 00 /* PCLK*/ 把UCON0寄存器的其他位也设置下: Transmit Mode [3:2] = 01 /* 中断/查询模式*/ Receive Mode [1:0] = 01 /* 中断/查询模式 */ UCON0 = 0x00000005 所以我们把UART clock = PCLK = 50M (第九课 设置的时钟) UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1 = 50 000 000 / (115200*16) - 1 = 26 因此设置UBRDIV0寄存器 = 26 3、设置数据格式8个数据位 0个校验位 1个停止位 设置UCON0寄存器 Word Length [1:0] = 11 UCON0= 0x00000003 4、其他设置使用FIFO的话,可以发送64byte数据,不适用的话,只能发送1byte数据,接收同理 编译出现的错误: uart.c:22: warning: conflicting types for built-in function ‘putchar’ 因为putchar等是内联函数,所以我自定义的是int puts(const char *s),内联是void puts(const char *s) 【解决办法】 1.在编译是加上-fno-builtin或者-fno-builtin-FUNCTION 选项,你就可以自己实现这些函数而不冲突了。例如在上面的提示中,你编译时加上-fno-builtin-puts ,就可以正常编译了。 2.把这些函数改个名称,以便不冲突。 https://blog.csdn.net/haidonglin/article/details/17261709 运行结果: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |