[STM8] STM8S105K6开了定时器中断后,程序会跑到Void NonHandledInterrupt (void)中!

[复制链接]
 楼主| dzxxjack 发表于 2014-5-25 20:21 | 显示全部楼层 |阅读模式
我用的编译软件是STVD,开了定时器中断后,主函数中While(1)循环内的函数只执行了几句,然后就跳到@far @interrupt void NonHandledInterrupt (void)
{
        /* in order to detect unexpected events during development,
           it is recommended to set a breakpoint on the following instruction
        */
        return;
}
里出不来了,time1里没有任何函数,只是提供一个时基,关掉中断后,While(1)循环里的所有函数都能正常执行,太奇怪了,请大家帮忙看一下!
 楼主| dzxxjack 发表于 2014-5-25 20:26 | 显示全部楼层
截了一张图片。

Nonhandledtnterrupt

Nonhandledtnterrupt
icecut 发表于 2014-5-25 21:25 | 显示全部楼层
你确定就只开了一个中断?能不能找一下那个中断跳进来的
 楼主| dzxxjack 发表于 2014-5-25 22:05 | 显示全部楼层
icecut 发表于 2014-5-25 21:25
你确定就只开了一个中断?能不能找一下那个中断跳进来的

就开了一个time1,另外如附件图片,执行到WriteDataToTM1727(LCDBuffer,LCD1adr,20);时,点step over就会跳到Void NonHandledInterrupt (void)中,如果先点step into,却跳出来“遇到无效参数”,这是什么状况啊?
step into.JPG
 楼主| dzxxjack 发表于 2014-5-25 22:07 | 显示全部楼层
dzxxjack 发表于 2014-5-25 22:05
就开了一个time1,另外如附件图片,执行到WriteDataToTM1727(LCDBuffer,LCD1adr,20);时,点step over就会 ...

如果关掉定时器中断,重新编译,所有都运行正常!
mmuuss586 发表于 2014-5-26 09:02 | 显示全部楼层
dzxxjack 发表于 2014-5-25 22:07
如果关掉定时器中断,重新编译,所有都运行正常!

用官方的例程测试下;
再对比下,哪里改错了
icecut 发表于 2014-5-26 10:02 | 显示全部楼层
从汇编看是一个函数调用,肯定能进去的.光标去汇编那边点单步

你在定时器中断里加断点,确认是不是定时器里有什么问题.

遇到这种问题一般是重新建工程.
 楼主| dzxxjack 发表于 2014-5-26 19:48 | 显示全部楼层
可能是WriteDataToTM1727(LCDBuffer,LCD1adr,20)这个函数在执行时哪里出现了异常,我把这个函数从主函数While(1)循环中拿出,放到time1中,程序就运行正常了,缺点是time1被这个函数耗了一点时间,系统时间变慢了一点,不过我这个程序对时间要求不是太高,应该没什么问题了,谢谢两位版主!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

0

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