CC1110 Sleep timer 发现偶然不准的问题,请支招,谢谢!
时间:12-23
整理:3721RD
点击:
CC1110 应用程序中有一个中断函数使用了SLEEP TIMER,中断周期是1s。ST中断后点亮/关闭LED,发现奇怪的现象是:ST前期工作良好,随着后期代码量的增加,不知何时开始ST就发生偶尔一次会不准的现象。通过测试发生的条件是主程序main中加上一个执行按键判断并对LCD上的菜单进行显示的函数(子程序)就会发生,而main中其他的小的子程序没影响。其实这个发生问题的子程序在没有按下按键的情况下程序只是进行了2个BOOL变量判断,并没有执行实质代码,但仍然出问题。看汇编代码
发现在调用此函数后城西先调用了FUNC_ENTER_XDATA(作用?),退出函数之前先调用FUNC_LEAVE_XDATA。其实在不发生问题的小程序里其中一个的汇编代码也是这样的,但没有发现ST不准,唯独这个大点的程序这样。(注;整个应用代码32218byte接近饱和,试过各种优化级别和不优化,现象都一样)请版主提供下建议。谢谢!
楼主已经研究得很细致了,而且似乎也给出了答案,代码太大。
谢谢您的回复。我新建了一个工程,把其他的文件都去掉了,只剩下那个出问题的处理按键和LCD的函数,这时的代码总量是19KB。问题依旧。
这部分代码能贴出来看看吗?另外你说 Sleep Timer 不准是怎样判断的?