×
嵌入式 > 技术百科 > 详情

STM8 串口接收字符串问题

发布时间:2020-06-03 发布时间:
|

此处附上接收中断源码

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

 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
馈通滤波器的运用指南