OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9059|回复: 5

无线模块接收完数据返回到菜单界面就死机了,怎么解决啊,第一次发帖,不要笑我哈

[复制链接]

15

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2012-7-5
在线时间
6 小时
发表于 2012-7-17 14:29:11 | 显示全部楼层 |阅读模式
特别奇怪啊!我点进入无线通讯的菜单,进入频道1接收模式,再点返回就回到了主菜单,不会出现死机现象(没有收到数据的情况下),当我收到数据开始计数的时候,再点返回就会出现死机的情况,请问原子大哥这是怎么回事呀?
本人是大二的学生,第一次发帖。
谢谢原子哥啊!
附上山寨原子哥的程序。
void Wireless_Play(void)
{       
 u8 a,b,d,c;  
 u8 key; 
 u8 mode;//24L01的模式设置
 u8 tmp_buf[5];
 u16 l; 
  
 mode=Wireless_Mode_Set();
 if(mode==0)
 {
  SPIx_Init();//设置回原来的    
  SPIx_SetSpeed(SPI_SPEED_4);//18Mhz
  return;//24L01检测失败,直接退出
 }
 if(mode==1)
 {
     Load_Gui_Show("清除","接收","返回");
  RX_Mode();//频道1接收模式
 }     
 if(mode==2)
 {      
  Load_Gui_Show("清除","接收","返回");//加载界面
  RX_Mode();//频道2接收模式
 }
 if(mode==3)
 {
  Load_Gui_Show("清除","接收","返回");//加载界面
  RX_Mode();//频道3接收模式
 }
 LCD_Fill(0,0,240,296,LGRAY);//填充灰色
 OINT_COLOR=BLACK;//设置字体为蓝色   
 while(1)
 {            
  
  if(mode==1)//接收模式
  {
       Show_Str(60,30,"NRF24L01 接收模式",16,1); 
  Show_Str(60,50,"收到的数据:",16,1);         
     Show_Str(60,70,"应答的数据:",16,1);
  Show_Str(60,90,"标志位数据:",16,1);             
     Show_Str(60,110,"次数计数器:",16,1);
  Show_Str(60,130,"频道数2:",16,1);
  RX_Mode();
  l=0;
  tmp_buf[1]=0;
  tmp_buf[0]=0;
  OINT_COLOR=BLUE;
  while(1)
  {                       
   NRF24L01_RxPacket(tmp_buf);
   if(tmp_buf[0]==0xff)
   {
   LED1=0;
   d=tmp_buf[0];
   c=d+0;
   tmp_buf[0]=0;
   LCD_ShowNum(148,90,c,2,16); 
   if(tmp_buf[1])
   {
    a=tmp_buf[1];
    b=a+0;
    tmp_buf[1]=0;
    LCD_ShowNum(148,50,b,5,16);
             LCD_ShowNum(148,110,l,5,16);
     l=l+1;
    }
    }          
   delay_ms(50);
   LED0=!LED0;
      key=AI_Read_TP(30);//得到触点的状态
   if(key)//触摸屏被按下       
  { 
   en_Point.Key_Reg|=0x80;//标记按下了按键  
   }
        else if(Pen_Point.Key_Reg&0X80)//按键松开了
  {
   if(Pen_Point.Key_Reg&0x03)//点动按下
   {    
                if(Is_In_Area(203,300,32,16))//返回按钮按下了
    {
       en_Point.Key_Reg=0;//清除笔状态     
     return ;//直接退出
    }
    if(Is_In_Area(5,300,32,16))
    {
       Pen_Point.Key_Reg=0;
       LCD_ShowNum(148,50,0,5,16);
                   LCD_ShowNum(148,110,0,5,16);
       l=0;    //清屏
    }
   }
   }
   };       
  }
相信自己,我能行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2012-7-5
在线时间
6 小时
 楼主| 发表于 2012-7-17 15:27:30 | 显示全部楼层
求求原子大哥指点指点吧!还是不行啊。
相信自己,我能行
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-17 20:53:49 | 显示全部楼层
2套板子做实验?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2012-7-5
在线时间
6 小时
 楼主| 发表于 2012-7-17 21:35:12 | 显示全部楼层
没有啊,我自己做了一个无线发射模块,开发板主要是接收。
嘿嘿,我解决了,就是把主函数的
这里  case 5//无线通信模式
        wireless_play();
        load_Sys_ico();//重新加载系统菜单
        select_menu(0,index,1);//选中上次选中的

把红色部分去掉然后就不死机了,但是不知道为什么,别的菜单程序都可以呀(选中上次选中的)!这个为什么就不行呢?解释不了。
希望原子大哥解释一下哈!
谢谢啦!
相信自己,我能行
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-17 23:46:48 | 显示全部楼层
回复【4楼】方成无解:
---------------------------------
这个比较怪,可能是内存溢出导致的死机,你用JTAG跟踪一下看看.
你自己做的无线模块?
买24L01的芯片自己做?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2012-7-5
在线时间
6 小时
 楼主| 发表于 2012-7-18 10:32:19 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
呵呵,我哪有那么厉害,自己买24L01芯片自己做呀
我就买了两个无线模块,20元
自己画个PCB做发射罢了,上面口误了。
这东西太神奇了,昨天晚上写了个程序,和上面一样啊!发现又不死机了
哎!真是怪啊!可能自己写的太乱了吧!(一大堆的“{}”好烦!)
不过我把LED那指示灯一闪一闪的程序全不要了(说不定这里有问题?)
相信自己,我能行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表