STM32/STM8技术william hill官网
直播中

汤文星

11年用户 43经验值
擅长:可编程逻辑 嵌入式技术 制造/封装 控制/MCU RF/无线
私信 关注
[讨论]

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

串口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);                                                
                }

已退回1积分

回帖(4)

chenwei6991627

2016-12-11 12:29:37
应该加结束的判断啊
举报

王栋春

2016-12-11 15:11:14
这个感觉楼主没有加入结束循环的判断呀  楼主再加入试试看
举报

汤文星

2016-12-11 16:23:10
引用: 王栋春 发表于 2016-12-11 15:11
这个感觉楼主没有加入结束循环的判断呀  楼主再加入试试看

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

小欧阳

2018-7-11 11:10:10
楼主这个问题有解决吗 我也存在同样的问题
举报

更多回帖

×
20
完善资料,
赚取积分