STM8 串口接收字符串问题

本文介绍了一个基于USART的接收中断处理程序实现。通过设置全局变量cnt_USART来管理接收数据的缓冲区,并采用定时器进行适当的延时确保数据可以被正确读取。文章提供了具体的中断处理函数代码,展示了如何在中断服务例程中清空中断标志位并接收数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


此处附上接收中断源码

#ifdef _RAISONANCE_
void USART_RX_IRQHandler(void) interrupt 28
#endif
uint8_t cnt_USART ;
#ifdef _IAR_SYSTEMS_
#pragma vector=30
__interrupt void USART_RX_IRQHandler(void)
#endif
{
    /* In order to detect unexpected events during development,
   it is recommended to set a breakpoint on the following instruction.
    */
    USART_ClearITPendingBit ();//清中断标志
    if(!USART_GetFlagStatus (USART_FLAG_RXNE))//等待接收完毕
    {
    
      p_rxbuf[cnt_USART++] = USART_ReceiveData8();     //接收数据 
      if(cnt_USART == 0x0B)
        cnt_USART = 0xFF ;
    }
//    USART_RendCmd(p_rxbuf);  //接收11bytes串口指令
}
cnt_USART 为全局变量,因为每次接收每次只是接收1byte,因此,在主程序应该进行适当的延时来等待缓冲区的数据被读取。

       while(cnt_USART!=0xFF)
       {
        if(mark_1ms >100)
          break;
       }
在函数进行适当的延时进行等待,mark_1ms 此处是使用TIM2进行延时,也可以在主函数中进行空函数延时。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值