那么如果我和串口助手调试,需要串口助手发送数据,单片机接收。那么使用的哪个函数呢?
单片机有串口中断。串口每收到1byte数据就会触发1次接收中断。中断一般像下面这面,你可以根据自己的需求改。我的做法是中段里只管接收数据,然后定时器中监测一定时间内没有收到数据,认为数据接收完毕,然后置位接受完成标志。在主函数中查询这个标志,进行数据处理。
void USART1_IRQHandler (void)//串口中断我在usart.c里面写了这个函数
uint8_t USART1_Getchar(void)
{
while(!(USART1->SR & (1DR; //直接返回DR的数据
}
主函数里
whlie(1)里调用此函数
文件是从cubemx导出的,可以接收数据。但是我在另一个项目里用这样的方法,程序就死在那了,我不太明白哪里出了问题。
cubemx会自动帮你做串口的初始化。你的另一个项目对这个串口有做初始化吗?
追问初始化有,但是我感觉有问题
串口通讯是没有问题的,现在是单片机给QT编写的上位机发送数据,按约定格式,发送的数据使用的是重写的printf();现在我需要从QT编写的上位机里发送一组数据,单片机需要读取解析这条数据的