完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
近日在用IAR FOR 8050 8.10版本调试CC2530单片机中发现了一个非常奇怪的问题,我用print函数向串口打印传感器数据,一切都调试正,如下图所示: 现在数据输出正常吧! 然后要增加新的功能了,这是必须的。 然后….. 加入了一个C文件,sleeptime.c,这是用来设置定时休眠的,源文件如下:
上面这个文件只是加入进来,没有调用里面的任何函数哦, 编绎通过,没有报错,下载,运行…. 奇怪的事情发生了,串口打印的数据变成了这样: 全部变成了超级大的负值,百思不得其解,清除,重新编绎,再下载,不行! 关闭工程,再打开,不行! 甚至重启了电脑,不是不行。。 把上面的sleeptime.c这个文件从工程中移除,重新编绎,再下载,又正常了。 看来只能采用最笨的排除法了,最先怀疑的是这段代码:
把这个函数整件屏蔽了,编译,下载,正常。 我的天呐!!噩梦还在继续! 只有采用逐行排除了,
最后屏蔽得就剩下这行代码了 uint32_t sleeptimer=0; 定义了一个长整型的变量,编绎下载,还是不行 看来问题就出在这行代码上了,可实在看不出有什么问题,只能采用各种怀疑了… 难道长整型赋值不对,把代码改成如下: uint32_tsleeptimer=0L; 编绎通过,吐血,还是不行: 难道这个变量不能定义成局部变量,把这个变量定义放到函数外面试试: uint32_t sleeptimer=0; voidset_st_period(uint16_t sec) { //把ST2:ST1:ST0赋值给sleeptimer sleeptimer |=ST0; sleeptimer |=(uint32_t)ST1<<8; sleeptimer |=(uint32_t)ST2<<16; / sleeptimer+=((uint32_t)sec*(uint32_t)32768);//低速频率为32.768KHZ,故每秒定时器计数32768次 //把加N秒的计数值赋给ST2:ST1:ST0 ST2=(uint8_t)(sleeptimer>>16); ST1=(uint8_t)(sleeptimer>>8); ST0=(uint8_t)sleeptimer; } 编绎,下载,激动人心一刻要来临了,行不行呢? 这里插播一条广告哦,我们把平里产品开发过程中用到的一些芯片、技术顺便做成了模块,与大家一起分享: |
|
相关推荐 |
|
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
632 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
671 浏览 0 评论
772 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1340 浏览 0 评论
1166 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12057 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 22:27 , Processed in 0.720135 second(s), Total 41, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号