如何调试PIC16的堆栈?

[复制链接]
6538|6
 楼主| 457878 发表于 2012-6-11 09:42 | 显示全部楼层 |阅读模式
问题:PIC16F721只有8级堆栈,但程序产生了11级调用,不知道如何查看调试堆栈:
Warning [1393] F:\__WirlessBoot\Code\Device\__Receiver\C\main.c; 30. possible hardware stack overflow detected, estimated stack depth: 11

生成的map文件里没有calltree,  MPLAB IDE里的Hardeware stack窗口好像也是个摆设,如图所示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
兰天白云 发表于 2012-6-11 10:09 | 显示全部楼层
PIC16系列堆栈有2级、8级、16级,堆栈不占用RAM(与51单片机不一样,51的占用RAM)堆栈溢出无提示(这一点与51单片机一样) PIC18系列堆栈有32级且溢出有提示,有状态位可查 采用仿真可查出堆栈是否溢出,主要是查压入的地址

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wrightdu 发表于 2012-6-11 10:15 | 显示全部楼层
[jngjghjghjghjghjghjghjgh#[/url] 457878
 楼主| 457878 发表于 2012-6-11 10:21 | 显示全部楼层
2# 兰天白云

没有溢出提示,没有查询方法,那得从main()函数开始一步一步去查了...还好有个Watch窗口可以看PCLATH :L
 楼主| 457878 发表于 2012-6-11 10:24 | 显示全部楼层
也不行,我以为PCLATH是堆栈指针呢,原来是PC指针...
兰天白云 发表于 2012-6-12 12:55 | 显示全部楼层
仿真时从你的截图窗口看就可以了

用这级别的单片机,一般不会进行递归调用,所以普通调用很容易知道调了几层
diweo 发表于 2012-6-12 21:08 | 显示全部楼层
估计你是调试到main第一行就暂停了,后面都没执行,你让Hardeware stack窗口怎么显示呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

270

主题

885

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部