串口
第55章
最高位5MHz
格式
空闲位: 逻辑1
起始位: 逻辑0
数据位: 可以循着5-8位
奇偶校验位: 可以不使用
停止位: 传输结束可以选择1, 1.5, 2位高电平
波特率: 传输数据的速率, 每秒传递的数据位
寄存器
UARTx_URXD
: 串口接收到的寄存器保存的位置, 最低的8位
UARTx_UTXD
: 数据发送寄存器, 发送的时候写入最低的8位
UARTx_UCR1-4
: 控制器. UARTx_UCR1
, bit0使能, bit14自动检测波特率, 1的时候使能, UARTx_UCR2
: bit0软件复位, 0的时候复位, bit1: 接收使能, bit2: 发送使能, bit5: 设置数据位, 0表示7位数据位, 1表示8位数据位, bit6设置停止位, 0为1位, 1为两位, bit7: 奇偶校验位0偶校验, bit8:是否使能校验, UARTx_UCR3
: bit2必须一直设置为1
UARTx_UFCR
: bit7-9设置分频值, 可以选择PCLL3除以6位80MHz, , 也可以选择晶振频率CSCDR1[UART_CLK_SEL]控制, CSCDR1[UART_CLK_PODF](bit0-5)控制再次分频
UARTx_UFCR, UARTx_UBIR,UARTx_UBMR
:决定串口博得率, 寄 存 器UARTx_UFCR
中我们要用到的是位RFDIV(bit9:7),用来设置参考时钟分频
UARTx_USR1-2
: 状态寄存器,UARTx_USR2
bit0表示为1的时候有数据可以读取, bit3为1发送完成,
实现
使用UTART1串口UART1_TX_DATA, UART1_RX_DATA
在实现对于库函数的编写的时候要在-fno-builtin
在Linux下的编码方式为utf-8
移植printf函数
实际是从uboot中提取出来的, 移植模块, 提供putc
和getc
在编译C文件的时候添加了选项“-Wa,-mimplicit-it=thumb
”,否则的话会有如下类似的错误提示:
thumb conditional instruction should be in IT block --'addcs r5,r5,#65536'
==这里的不支持浮点数==