打印
[STM8]

STM8 中断函数修改

[复制链接]
1691|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2013-12-18 17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   IDE界面右边的项目目录树中,我们可以看到STVD对工程自动增加了两个文件,一个是main.c文件,一个是stm8_interrupt_vector.c文件。后者提供了STM8所有的中断入口函数的地址表,以及用于各种不同类型外设中断函数名称申明。

    在stm8_interrupt_vector.c文件中,我们可以看到除去Reset向量外其它中断向量的入口均是统一使用void NonHandledInterrupt (void)函数。对于正常的使用我们还是需要重新跟改中断函数入库函数名称。

    对于中断函数的入口修改:



    1、struct interrupt_vector const _vectab[] 指明的中断向量表,每一个类似{0x82, NonHandledInterrupt},偏移量的申明表示的都是一个中断矢量对于的中断函数名称。

2、中断函数的申明 @far @interrupt void NonHandledInterrupt (void)

例:当需要使用I2C中断的时候,可以这样做:



   1、申明I2C中断函数名称: (stm8_interrupt_vector.c文件中)

       在struct interrupt_vector const _vectab[]中找到I2C中断函数入口,加入I2C中断函数名称



         {0x82, I2C_Server_Interrupt },   /* IRQ19 - I2C (I2C interrupt) */



   2、在stm8_interrupt_vector.c文件中添加服务函数:

         @far @interrupt void I2C_Server_Interrupt (void)



       {

         ~~~~~加入中断服务代码~~~~~~

                 return;

        }



3、最好在文件头上方申明外部可调用:extern void I2C_Server_Interrupt (void)



4、或者仅是申明函数,再定义STM8_IT.c、STM8_IT.h文件,将中断服务程序全部放置其中。




工程建立好以后,可以通过菜单栏“Project”->“Settings”来修改项目配置

沙发
feilusia| | 2013-12-18 18:35 | 只看该作者
如果用IAR是不是就没有中断向量表了?我使用的时候没有发现它像STVD一样生成中断向量表。

使用特权

评论回复
板凳
拿起书本|  楼主 | 2013-12-18 19:15 | 只看该作者
修改对应LINK文件就可以实现,具体看一下IAR的手册!

使用特权

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

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝