XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


串口

目录

串口

第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),用来设置参考时钟分频

QQ图片20220817113440

UARTx_USR1-2: 状态寄存器,UARTx_USR2 bit0表示为1的时候有数据可以读取, bit3为1发送完成,

实现

使用UTART1串口UART1_TX_DATA, UART1_RX_DATA

在实现对于库函数的编写的时候要在-fno-builtin

在Linux下的编码方式为utf-8

移植printf函数

实际是从uboot中提取出来的, 移植模块, 提供putcgetc

在编译C文件的时候添加了选项“-Wa,-mimplicit-it=thumb”,否则的话会有如下类似的错误提示:

thumb conditional instruction should be in IT block --'addcs r5,r5,#65536'

==这里的不支持浮点数==