为了账号安全,请及时绑定邮箱和手机立即绑定

STM32单片机如何处理QT上位机串口中发过来的数据?

STM32单片机如何处理QT上位机串口中发过来的数据?

慕雪6442864 2019-04-11 11:07:04
STM32单片机如何处理QT上位机串口中发过来的数据?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

单片机有串口中断。串口每收到1byte数据就会触发1次接收中断。中断一般像下面这面,你可以根据自己的需求改。我的做法是中段里只管接收数据,然后定时器中监测一定时间内没有收到数据,认为数据接收完毕,然后置位接受完成标志。在主函数中查询这个标志,进行数据处理。

123456789101112131415161718192021222324void USART1_IRQHandler (void)//串口中断{    u8 dat,flag = 0;    if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)    {        USART_ClearITPendingBit(USART1,USART_IT_ORE);         dat = USART_ReceiveData(USART1);        flag = 1;    }    if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET)   //Receive Data register not empty interrupt.    {        USART_ClearITPendingBit(USART1,USART_IT_RXNE);        dat = USART_ReceiveData(USART1);        flag = 1;                }    if(flag == 1)    {        Uart1RecvOver.recvOver = 0;        if(PushInQueue_Q(&uart1RecvQueue, dat))            Uart1RecvOver.recvTimeCnt = 0;        else            Uart1RecvOver.recvTimeCnt = USART_RECV_END_TIME;     }}


查看完整回答
反对 回复 2019-04-15
?
jeck猫

TA贡献1909条经验 获得超7个赞

单片机接收处理串口的数据的过程就是配置好波特率、位宽、校验位等,收到数据 后可以引起中断,也可以查询标志位,然后进行相应的处理。
1) 串口时钟使能,GPIO 时钟使能。
2) 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
3) GPIO 初始化设置:要设置模式为复用功能。
4) 串口参数初始化:设置波特率,字长,奇偶校验等参数。
5) 开启中断并且初始化 NVIC,使能中断(如果需要开启中断才需要这个步骤)。
6) 使能串口。
7) 编写中断处理函数:函数名格式为 USARTxIRQHandler(x 对应串口号)



查看完整回答
反对 回复 2019-04-15
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

串口通信是有协议的,所有操作都得按照协议来,和你用什么编译器/编辑器或者框架无关,如何读取数据要看你的单片机硬件了:
有串口->直接读取寄存器的数据就行了,每次一个BYTE,一般该寄存器都命名为SBUF
无串口->需使用软件模拟串口通信。

查看完整回答
反对 回复 2019-04-15
  • 3 回答
  • 0 关注
  • 1602 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信