中级会员
 
- 积分
- 214
- 金钱
- 214
- 注册时间
- 2014-4-30
- 在线时间
- 26 小时
|
这两天在做一个wifi控制开关的项目,用的是stm32f070,主要功能串口、wifi模块(esp8266)、rtc、LED、按键(只有一个,手动/自动切换)、继电器。
昨天下午把最后一个功能模块写完之后,发现原来调试正常的wifi模块突然不能联网了,调试了一晚上加今天一上午,用了很多调试办法,都没有结果,一个int型的变量应该要在定时器里加到8000才执行某个操作,但是往往加到700~1000左右的时候就会出现异常。
后来才发现timer3中断中用了一个函数中sprintf函数,
sprintf((char*)str,"%02d%02d%02d%02d%02d%02d",time.Year,time.Month,time.Date,time.Hour,time.Min,time.Sec);
猜测这个函数占用的时间比较久,导致内存不正常。看来像sprintf这种函数最好还是在主循环中使用,避免在中断中使用。
|
|