[STM32] 程序在线仿真成功,烧录运行却失败了

[复制链接]
1953|3
 楼主| 泡沫馨馨 发表于 2014-8-26 14:48 | 显示全部楼层 |阅读模式
本帖最后由 泡沫馨馨 于 2014-8-26 14:53 编辑

简单的检测NRF24L01连接是否成功的程序,NRF24L01.c文件中的函数直接从例程搬过来的,设置为如果连接失败的话,灯闪烁,连接成功则不闪烁
  1. u8 NRF24L01_Check(void)
  2. {
  3.         u8 buf[5]={0xA5,0xA5,0xA5,0xA5,0xA5};
  4.         u8 i;
  5.         NRF24L01_Write_Buf(WRITE_REG_NRF+TX_ADDR ,buf,5);
  6.         NRF24L01_Read_Buf(TX_ADDR,buf,5);  
  7.         for(i=0;i<5;i++)
  8.         {
  9.                 if(buf[i]!=0xA5)
  10.                         break;       
  11.         }               
  12.         if(i!=5)
  13.                 return 1;        //失败
  14.         else
  15.                 return 0;         //成功
  16. }
  1. while(NRF24L01_Check())
  2.         {
  3.                 LED_G=0;  
  4.                 Delay_1ms(50);
  5.                 LED_G=1;
  6.                 Delay_1ms(50);
  7.         }
在线调试时,单步运行可以看到程序在上面的for循环中来回五次,返回值为0,没有进入while中灯闪烁的函数
但是当通过jlink把程序烧录到板子里运行的时候,灯却闪烁了,
请问这是为什么呢?
junqishang 发表于 2014-8-27 00:04 | 显示全部楼层
单步运行可以,直接运行出问题这种情况,我也遇到过很多次。都是程序的问题。
你的这个,SPI速度设置为多少? NRF24L01的最大SPI时钟为10Mhz,不要超了。
coody 发表于 2014-8-27 12:02 | 显示全部楼层
既然这样,那STM32根本就不能用,换别的ARM吧
bluesky001 发表于 2014-9-1 12:11 | 显示全部楼层
可能时序问题。比如上电延时,执行过程中的延时等待等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

24

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部