终极问题:空闲任务使用的堆栈与实际计算值出入太大
************************************************
案例如下:
目标器件:mega64
编译环境:winavr20100110
OS版本:主要是V2.76,东拼西凑了一些移植文件,自己修改了几条语句,并修改到能支持mega2561
系统时钟:使用定时器0的CTC模式
一个简单的demo,用户任务3个,加IDLE任务,总共4个,分别是
GLED显示任务:1秒闪一次,简单指示此任务在执行
UART1接收任务:以115200bps的速率收发数据
堆栈统计任务:5秒统计一次,从UART1打出调试信息,同时让RLED闪一次
空闲任务:系统决定
***********************
当窜口不接收数据时,空闲任务所使用的堆栈与理论值一样,37个字节。但是,用sscom往UART1以1ms的间隔发一串数据,
空闲任务堆栈飙到149甚至更大,偶尔系统还会crash down 。GLED显示任务堆栈却一直很稳定,所以搞不明白是啥道理了。
希望达人们诊断诊断(是否中断任务的写法有问题?),谢谢。 |