CC2430 休眠模式下设置断点调试异常
来源:互联网 发布:win10没有windows聚焦 编辑:程序博客网 时间:2024/06/05 14:20
这个问题的发现,是我一次写程序过程中,想查看休眠是否起了作用,调试结果让我很震撼。
芯片使用的是TI CC2430,没有使用Zigbee 协议栈,只是简单的单片机编程。开发工具使用的是IAR FOR 8051 7.30B版。不知是不是IAR的问题,其他编译环境没有测试过。
示例代码如下:
void Delay(uint n){ uint jj; for(jj=0;jj<n;jj++); for(jj=0;jj<n;jj++); for(jj=0;jj<n;jj++); for(jj=0;jj<n;jj++); for(jj=0;jj<n;jj++);}/*****************************************//LED闪烁函数*****************************************/void chg_yled(void){uchar jj=10;while(jj--){YLED = !YLED;Delay(10000);}}/*********************************************************************//主函数*********************************************************************/void main(void){SET_MAIN_CLOCK_SOURCE(CRYSTAL); LED_ENABLE(1); //将IO口使能 //随便弄些LED控制代码,目的是证明只会进入一次RLED = 1;Delay(50000);Delay(50000);Delay(50000);RLED = 0; //红灯点亮Delay(50000);Delay(50000);Delay(50000);RLED = 1; //灭 chg_yled(); //闪烁黄灯Init_SLEEP_TIMER(); //初始化休眠定时器while(1){test = 1000;addToSleepTimer(3);SET_POWER_MODE(2); //PM2 模式chg_yled(); //让黄灯闪烁}}#pragma vector = ST_VECTOR __interrupt void ST_ISR(void){STIF = 0;}
实验现象:
1、如果在while(1)内部代码中加入断点,程序正常运行,CC2430标签能看到红灯只亮一次,然后间隔3S黄灯便会重复闪烁,期间红灯一直是灭的。
2、在while(1)中设置一个断点后,如在 test = 1000处下断,每次都会在test停下来,其后每次红灯每隔3S后被点亮,黄灯还是照样闪烁。总结:
虽然不知道是不是IAR为了捕获断点故意采取的这种措施,但当时仍困扰我很久,还一直认为是休眠后会从main处开始执行。总之,如果是使用了休眠模式,则不要在相关的代码处设断,否则会出现程序执行乱跳,是真实的乱跳。
还有一点,就是PM2模式休眠,低频振荡器即可以使用RC也可以使用晶振。32.768k RC振荡器是工作的,没有断电。这点从初始化的CLKCON可以看出,选择的是32kHz的RC振荡器。经测试,两者都是可以的。
SET_MAIN_CLOCK_SOURCE(CRYSTAL); // SLEEP &= ~0x04; /*全开*/ while(!(SLEEP&0X40));/*待稳*/ asm("NOP"); CLKCON &= ~0x47; /*晶振*/ SLEEP |= 0x04; /*关掉不用的*/CLKCON 默认值是0xC9 选中的是32.768 KHz的RC和16MHz的RC振荡器,跟~0x47进行与运算后变成0x88,意味着高频系统时钟选择为32M晶振,低频的仍是RC振荡器。
- CC2430 休眠模式下设置断点调试异常
- vxworks在shell下设置断点调试
- eclipse 下调试launcher,如何设置断点
- Zigbee休眠(cc2430)
- iOS调试 - 在系统抛出异常处设置断点
- 在Android Studio下使用异常断点调试程序
- windbg调试-----断点设置
- windbg 调试断点设置
- python调试 设置断点
- release设置断点调试
- 简单C语言模式实现OD调试断点设置
- VS在Release下设置断点调试信息
- phpstorm+xdebug设置断点调试(wamp或者xampp下)
- 下断点调试JavaScript
- NDK下断点调试
- qt在Debug模式下断点调试时无效问题
- eclipse 调试之异常断点
- VS调试断点执行异常?
- 如何让远程数据库中的1张表导入到本地数据库中,数据库都是SQL SERVER 2000
- HTML常用标记
- windows右键添加cmd
- 云AC成发展趋势 3至5年可大规模应用
- Vim配色方案
- CC2430 休眠模式下设置断点调试异常
- 判断一字符串是不是对称的
- Unix Socket编程--I/O复用之select模型
- 从三层架构到MVC
- 人生感悟
- C语言队列实现( 动态数组 )
- ClientScript.RegisterStartupScript 不起作用
- apache顶级域名跳转
- list--初步学习STL