《STM32库开发实战指南 》USART
2020-10-04 本文已影响0人
再凌
骨干知识点在STM32控制遥控小车中已经有提及,如果有需要直接在那一份代码上做少许改动即可使用。
补充几个当时还不会的知识点。
发送寄存器
寄存器 | 功能 |
---|---|
TE | 发送使能 |
TXE | 发送单个字节的时候使用,检查发送寄存器为空? |
TC | 发送字符串的时候使用,实质上时多次调用发送单字符的函数,但是最后一次退出前要检查TC,发送完成寄存器 |
TXIE | 发送完成中断使能 |
printf的多态
我们可以在Keil5中的工程选项中,勾选Use MicroLIB,这样我们就可以在工程中使用stdio.h头文件了。
当然了,单片机又没有屏幕和键盘,所以原来printf、scanf的实现方法当然不能用了,不过我们可以通过串口的方式来实现其。按照串口的方法,将要显示的内容输出到串口,将要获得的字符从串口中读取,那么无论是printf、scanf,还是getchar,putchar,我们都可以在电脑上的串口调试工具看到效果了。
例如,实现fputc()
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口 */
USART_SendData(DEBUG_USARTx, (uint8_t) ch);
/* 等待发送完毕 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
return (ch);
}