今天在测试运行 RTX Tiny 系统的多任务时遇到的一个小问题. 单片机: C8051F340
发现: 定义了一个全局变量(一个字节)用于在中断里定时 3s 使用. 烧写后程序居然飞了一样, 各种操作都没有执行?
我把 static 去掉, 不行. 其实这个也不可能影响. 哈哈.....瞬间觉得自己好菜.
我又把他们注释掉. 烧进去好用了. 我擦........
然后我改了下, 中断里发送 signal 在任务里计数. 想想是不是因为中断和任务没有协调好? 还是不行. 其实这个也是蛮菜的想法. 关于调试还没有形成自己专业的思考流程.
最后, "顿悟"了. 没错. 头脑风暴. 说个不好意思的话. 以前真心没遇到过"栈溢出"问题.
所以, 我把这个全局变量加上了 xdata, 编译连接后 DATA 少了一个字节变成 79 Bytes. 烧进去好用了.
基本可以确定是栈溢出的问题了.
所以, 干脆把设置里的 Memory Model 改成 Large: XDATA. 有 4KB 呢. 足够了.
这个长知识啊. 传说中的经验???