波特率配置和串口收发
7第二个重头戏,如何把波特率配置好?两个寄存器就好。
波特率要精准才好,看看公式就知道了。UART_DIV(串口分频值)=F(MASTER)/串口收发波特率
串口分频值:转换成十六进制数,计算结果处理位(0341)H。
程序配置:UART1_BRR2=0X01;
UART1_BRR1=0X34;
提示:注意误差;注意赋值顺序;注意分频值不能小于16。
8第三个重头戏,如何配置相关功能的“使能”,一个寄存器就好。
使能发送/接收功能:UART1_CR2中的“EN”位;
使能发送/接收中断功能:UART1_CR2中的“TIEN”位,该位是开启中断功能位;
使能发送/接收完成中断功能:UART1_CR2中的“TCIEN”位,该位发送完成中断使能。
看看单纯发送功能的“使能”,如UART1_CR2=0X08;
看看发送且带中断功能的“使能”,如UART1_CR2=0XC8;
9第四个重头戏,如何研究单字节发送函数。发送完成标志位:UART1_SR中的“TC”位;
发送标志位:UART1_SR中的“TXE”位,该位是送的移位寄存器,要有个时间等它发送到引脚上。
发送单字节函数UART1_sendByte(u8 data),有形参,无返回值。
Void uart1_Byte(u8 data)
{
uart1_sr&=0xBF;
Uart1_dr=data;
While(!(uart_sr&0x40))
Uart1_sr&=0xbf;
}
10第五个重头戏,如何研究单字节接收函数。
接收完成标志位:UART1_SR中的“RXEN”位。接收单字节函数UART1_RECEIVEByte(void),无形参,有返回值usart_rx
U8 usart_receiveByte(void)
{
U8 usart1_rx;
While(!(uart1_sr&0x20));
Uart1_sr&=0xDF;
Usart_rx=uart_dr;
Return usart_rx;
}