合泰单片机中断问题
我以前用的是51单片机,现在用的是合泰48R08A-1.51C编程时有它的中断入口像voidInt0(void)interrupt0这样的。合泰单片机怎么处理编程仿真器仿...
我以前用的是51单片机,现在用的是合泰48R08A-1.
51C编程时有它的中断入口像void Int0(void) interrupt 0这样的。合泰单片机怎么处理
编程仿真器仿真时候老弹出堆栈溢出,单步运行到第三层嵌套就堆栈溢出了,是片子问题还是程序问题。
有中断的C代码的麻烦给一段,QQ461292125,在线等。确实给我帮助的在追加100分
谢谢您的回答,可是我还有一个中断的问题你没有回答,能在补充点关于中断的问题吗,我的函数有写IIC程序。嵌套层数在5到6层,若不嵌套全些到主函数真不敢想象他的长度 展开
51C编程时有它的中断入口像void Int0(void) interrupt 0这样的。合泰单片机怎么处理
编程仿真器仿真时候老弹出堆栈溢出,单步运行到第三层嵌套就堆栈溢出了,是片子问题还是程序问题。
有中断的C代码的麻烦给一段,QQ461292125,在线等。确实给我帮助的在追加100分
谢谢您的回答,可是我还有一个中断的问题你没有回答,能在补充点关于中断的问题吗,我的函数有写IIC程序。嵌套层数在5到6层,若不嵌套全些到主函数真不敢想象他的长度 展开
1个回答
展开全部
一般RISC单片机都采用专用的硬件堆栈,跟51单片机的堆栈结构完全不同(51是使用现有RAM来做堆栈),所以使用RISC单片机时要注意嵌套调用深度。
楼主所提芯片:HT48系列Cost-Effective I/O 型单片机只有两层硬件堆栈,你做三层嵌套,当然会出现堆栈溢出了。
解决办法:杜绝>=3层的嵌套(特别注意在中断中调用)
当然如果你的时间实在是充裕的很,而且硬件余量够足,编码水平也过硬,可以根据堆栈的数据结构试试实现一个软堆栈
--------------------------------------------------------------------
尽管你的说法有问题,但是看在分的面子上,我还是说一下吧:
既然用到IIC,堆栈消耗肯定很大,2层堆栈的单片机就别指望了,你需要使用堆栈多些的单片机:HT48R02N(6层),HT48R54A(6层),HT48R50A-1(6层),HT48R502(16层),还有很多,具体看Selection Guide
--------------------------------------------------------------------
HT48R08A-1是2层硬件堆栈,如果你嵌套了5-6层,一定会出问题,分析了下,有三种可能:
1.你不是用的HT48R08A-1
2.你的IIC软件包实际运行时,没有超出2层调用(尽管最高调用是5-6层,超级隐患!)
3.你判断的5-6层嵌套,实际只有2层(只有子程序调用和中断响应才会产生所谓“嵌套”是不是把For循环之类的也算进“嵌套”了呢)
Good luck!
楼主所提芯片:HT48系列Cost-Effective I/O 型单片机只有两层硬件堆栈,你做三层嵌套,当然会出现堆栈溢出了。
解决办法:杜绝>=3层的嵌套(特别注意在中断中调用)
当然如果你的时间实在是充裕的很,而且硬件余量够足,编码水平也过硬,可以根据堆栈的数据结构试试实现一个软堆栈
--------------------------------------------------------------------
尽管你的说法有问题,但是看在分的面子上,我还是说一下吧:
既然用到IIC,堆栈消耗肯定很大,2层堆栈的单片机就别指望了,你需要使用堆栈多些的单片机:HT48R02N(6层),HT48R54A(6层),HT48R50A-1(6层),HT48R502(16层),还有很多,具体看Selection Guide
--------------------------------------------------------------------
HT48R08A-1是2层硬件堆栈,如果你嵌套了5-6层,一定会出问题,分析了下,有三种可能:
1.你不是用的HT48R08A-1
2.你的IIC软件包实际运行时,没有超出2层调用(尽管最高调用是5-6层,超级隐患!)
3.你判断的5-6层嵌套,实际只有2层(只有子程序调用和中断响应才会产生所谓“嵌套”是不是把For循环之类的也算进“嵌套”了呢)
Good luck!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询