完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用的是ALIENTEK的蓝牙通信模块,应用中我定义一个全局变量,然后在usart2的接收中断中把收到的第一个字符
赋值给全局变量tt,代码如下,其他部分代码不改动。 void USART2_IRQHandler(void){u8 res; if(USART2->SR&(1<<5))//接收到数据{ res=USART2->DR; if(USART2_RX_STA main()函数中while(1) { if(USART2_RX_STA&0X8000)//????????????????{//LCD_Fill(30,200,240,320,WHITE);//???????? reclen=USART2_RX_STA&0X7FFF;//?????????¤?? USART2_RX_BUF[reclen]=0; //?????á??·?// LCD_ShowString(30,200,209,119,16,USART2_RX_BUF);//????????????????//LCD_ShowChar(30,220,USART2_RX_BUF[0],16,1); while(tt=='8') //????{// distance=440; distance-=20; if(distance<=200)distance=200; SetMode(7,0,1023); delay_ms(30); PawGoFar(distance); delay_ms(50); LED1=0; if(tt=='0')break;} USART2_RX_STA=0; } } while(1)里面的小while循环不会跳出,我的手机端在一直在给蓝牙发送命令,所以蓝牙一直在收到命令,理论上应该tt的值在变能够跳出while(tt=='8')这个循环, 但是实际发现不会跳出,如果把while循环改为if则能正常工作。 我的问题是,蓝牙接受数据部分代码,是使用usart2中断来实时的接收数据吗? 如果是的话我在中断处理程序中赋值全局变量为什么不能跳出while循环? 麻烦,发烧友给看看,我也把整体工程上传了,如果是别的问题也请指出。谢谢 robot.rar (1.13 MB ) |
|
相关推荐
5个回答
|
|
在if(USART2_RX_STA&0X8000)里面,添加printf,打印出你的tt值,看一下。
|
|
|
|
已经测试,在while循环里面tt值就是进入while的值不改变。我安卓软件是按键使用onTouch,摁下的时候发送一个字符做命令,弹起的时候发送另一个字符,如果用if可以看到摁下和弹起显示两个不同的字符,但是while则只能卡死在摁下的字符,tt的值不会改变。
|
|
|
|
USART2_RX_STA=0;放在while之前。
|
|
|
|
实际测试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,是串口启动下一次接收的前提.
|
|
|
|
只有小组成员才能发言,加入小组>>
370浏览 1评论
498浏览 1评论
614浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
501浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
475浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 02:50 , Processed in 0.744587 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号