前期点灯一直用得的都是库函数,数据手册看的也是似懂非懂。最近需要用到串口,有很多地方看不懂。所以又回来学习,通过寄存器点灯 让我更加理解了
串口发送数据
USART_SendData(USART1,tab[len]);
// while((USART1->SR&0X40)==0);
delay_ms(2000);
在配置好串口的前提下,直接调用这个函数就能发送字符
但是只能发送发送一个字符,想要发送字符串就加入循环就可以了,因为字符串是由多个字符组成。
但是,这里有一个问题。如果不进行设置,会出现数据被覆盖的情况,从而出现数据丢失
一种解决方法是加入延时
还有一种是判断发送是否完成 上面的while函数就是这个作用
SR DR 本质上就是寄存器,010101这种二进制编码,0x只是二进制的16进制写法,通过位操作传输数据。
还有就是printf函数的用法,虽然简单,但是有个缺点就是只能在某个串口使用,比较固定。需要向其他串口写数据的时候还是得像之前那样写。
一种是库函数写法 还有一种是寄存器写法
{
UART4->DR= Data[num][t];
while((UART4->SR&0X40)==0);
}
``
这种就是寄存器写法`