实际测试USART2_RX_STA=0;放在while之前确实可以一定程度上解决问题,但是还是经常会有卡死挨while循环的情况。于是在每个while里面都加上USART2_RX_STA=0,这下再也没有出现卡死的情况。
我想问一下,USART2_RX_STA=0,这个全局变量是怎样影响程序执行的?因为蓝牙中断void USART2_IRQHandler(void)
{
u8 res;
if(USART2->SR&(1<<5))//??????????
{
res=USART2->DR;
if(USART2_RX_STA
{
TIM4->CNT=0; //?????÷????
if(USART2_RX_STA==0)TIM4_Set(1); //?????¨?±?÷4??????
USART2_RX_BUF[USART2_RX_STA++]=res;//??????????????
}else
{
USART2_RX_STA|=1<<15;//????±ê???????ê??
}
tt=(char)USART2_RX_BUF[0];
}
}
这个函数里面的if函数的条件似乎每次都能得到满足,不是吗?为什么USART2_RX_STA=0可以使程序卡死? 麻烦原子哥给解释一下,谢谢。
实际测试USART2_RX_STA=0;放在while之前确实可以一定程度上解决问题,但是还是经常会有卡死挨while循环的情况。于是在每个while里面都加上USART2_RX_STA=0,这下再也没有出现卡死的情况。
我想问一下,USART2_RX_STA=0,这个全局变量是怎样影响程序执行的?因为蓝牙中断void USART2_IRQHandler(void)
{
u8 res;
if(USART2->SR&(1<<5))//??????????
{
res=USART2->DR;
if(USART2_RX_STA
{
TIM4->CNT=0; //?????÷????
if(USART2_RX_STA==0)TIM4_Set(1); //?????¨?±?÷4??????
USART2_RX_BUF[USART2_RX_STA++]=res;//??????????????
}else
{
USART2_RX_STA|=1<<15;//????±ê???????ê??
}
tt=(char)USART2_RX_BUF[0];
}
}
这个函数里面的if函数的条件似乎每次都能得到满足,不是吗?为什么USART2_RX_STA=0可以使程序卡死? 麻烦原子哥给解释一下,谢谢。
举报