微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32怎么设置一个中断接收所有字符串?下面程序一个中断只接收一个字节,发送10个字节进了10字中断

STM32怎么设置一个中断接收所有字符串?下面程序一个中断只接收一个字节,发送10个字节进了10字中断

时间:10-02 整理:3721RD 点击:
串口2中断程序是这么写的,实际测试时,串口助手向STN32的串口2发送一串字符串数据,然后通过STM32的串口1发送回串口调试助手,实际上到串口调试助手上显示的是连续进了三次中断一样,输出数据是一个字节后面接了11个00,紧接着是另一个字符数据在接11个00,如何一个中断接收所有数据,存储在数组中。
void USART2_IRQHandler(void)
{
        uint8_t value = 0;
        uint8_t BCC_sum=0;
       if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //è?1??óê?μ?êy?Y
        {
                    USART_ClearITPendingBit(USART2,USART_IT_RXNE); //??3y?D??±ê????
                    USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
                    BUFFER[buffer_index]=USART_ReceiveData(USART2);
                     buffer_index++;
               
                     text=1;
                    if(text==1)
                   {  
                           for(value=0;value<12;value++)        
                           {
                                printf("%x ",BUFFER[value]);
                                 
                          }        
                        text  = 0;
                        buffer_index = 0;               
                       USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);                                                
                }

应该加结束的判断啊

这个感觉小编没有加入结束循环的判断呀  小编再加入试试看

while(1)
{
        if(text==1)
        {  
                for(i=0;i<12;i++)       
                {
                        printf("%x ",BUFFER);
                 }       
             text  = 0;
             buffer_index = 0;               
       }
}
在主程序中的while程序是这样写的,这样写收发数据是正常的,但是想知道这样我发送一串字符串之后还是多少个字节就进入多少次中断?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top