打印
[STM8]

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

[复制链接]
3721|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用的编译软件是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.JPG (191.09 KB )

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 (200.98 KB )

step into.JPG

使用特权

评论回复
5
dzxxjack|  楼主 | 2014-5-25 22:07 | 只看该作者
dzxxjack 发表于 2014-5-25 22:05
就开了一个time1,另外如附件图片,执行到WriteDataToTM1727(LCDBuffer,LCD1adr,20);时,点step over就会 ...

如果关掉定时器中断,重新编译,所有都运行正常!

使用特权

评论回复
6
mmuuss586| | 2014-5-26 09:02 | 只看该作者
dzxxjack 发表于 2014-5-25 22:07
如果关掉定时器中断,重新编译,所有都运行正常!

用官方的例程测试下;
再对比下,哪里改错了

使用特权

评论回复
7
icecut| | 2014-5-26 10:02 | 只看该作者
从汇编看是一个函数调用,肯定能进去的.光标去汇编那边点单步

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

遇到这种问题一般是重新建工程.

使用特权

评论回复
8
dzxxjack|  楼主 | 2014-5-26 19:48 | 只看该作者
可能是WriteDataToTM1727(LCDBuffer,LCD1adr,20)这个函数在执行时哪里出现了异常,我把这个函数从主函数While(1)循环中拿出,放到time1中,程序就运行正常了,缺点是time1被这个函数耗了一点时间,系统时间变慢了一点,不过我这个程序对时间要求不是太高,应该没什么问题了,谢谢两位版主!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

0

粉丝