STM32
直播中

surround

12年用户 553经验值
私信 关注
[问答]

如何去实现STM8串口接收字符串的中断源码呢

怎样去解决STM8串口接收字符串的问题呢?

如何去实现STM8串口接收字符串的中断源码呢?

回帖(1)

李晶

2021-12-9 13:40:06
此处附上接收中断源码


#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进行延时,也可以在主函数中进行空函数延时。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分