STM8在STVD下开发所需的中断向量表模版

发布者:古泉痴迷者最新更新时间:2018-06-01 来源: eefocus关键字:STM8  STVD  中断向量表 手机看文章 扫描二维码
随时随地手机看文章

简介:在IAR下开发不会自动生成stm8_interrupt_vector.c文件,但是在STVD下会产生该文件,并生成中断向量表 _vectab ,如果要使用stm8_it.c中的函数结构文件来处理中断函数则需要用以下代码替换生成的stm8_interrupt_vector.c。

/* BASIC INTERRUPT VECTORS TABLE FOR STM8 devices 

 * Copyright (c) 2011 STMicroelectronics 

 */  

  

#include "stm8s_it.h"  

  

typedef void @far (*interrupt_handler_t)(void);  

  

struct interrupt_vector {  

    u8 interrupt_instruction;  

    interrupt_handler_t interrupt_handler;  

};  

  

struct interrupt_vector const _vectab[] = {  

  {0x82, (interrupt_handler_t)_stext}, /* RESET */  

  {0x82, (interrupt_handler_t)TRAP_IRQHandler}, /* TRAP - Software interrupt */  

    {0x82, (interrupt_handler_t)TLI_IRQHandler}, /* irq0 - External Top Level interrupt (TLI) */  

    {0x82, (interrupt_handler_t)AWU_IRQHandler}, /* irq1 - Auto Wake Up from Halt interrupt */  

    {0x82, (interrupt_handler_t)CLK_IRQHandler}, /* irq2 - Clock Controller interrupt */  

  {0x82, (interrupt_handler_t)EXTI_PORTA_IRQHandler}, /* irq3 - External interrupt 0 (GPIOA) */  

    {0x82, (interrupt_handler_t)EXTI_PORTB_IRQHandler}, /* irq4 - External interrupt 1 (GPIOB) */  

    {0x82, (interrupt_handler_t)EXTI_PORTC_IRQHandler}, /* irq5 - External interrupt 2 (GPIOC) */  

    {0x82, (interrupt_handler_t)EXTI_PORTD_IRQHandler}, /* irq6 - External interrupt 3 (GPIOD) */  

    {0x82, (interrupt_handler_t)EXTI_PORTE_IRQHandler}, /* irq7 - External interrupt 4 (GPIOE) */  

      

#if defined (STM8S208) || defined (STM8AF52Ax)  

    {0x82, (interrupt_handler_t)CAN_RX_IRQHandler}, /* irq8 - CAN Rx interrupt */  

    {0x82, (interrupt_handler_t)CAN_TX_IRQHandler}, /* irq9 - CAN Tx/ER/SC interrupt */  

#elif defined (STM8S903)  

    {0x82, (interrupt_handler_t)EXTI_PORTF_IRQHandler}, /* irq8 - External interrupt 5 (GPIOF) */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq9 - Reserved */  

#else /*STM8S207, STM8S105 or STM8AF62Ax or STM8AF626x*/  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq8 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq9 - Reserved */  

#endif /* STM8S208 or STM8AF52Ax */  

    {0x82, (interrupt_handler_t)SPI_IRQHandler}, /* irq10 - SPI End of transfer interrupt */  

    {0x82, (interrupt_handler_t)TIM1_UPD_OVF_TRG_BRK_IRQHandler}, /* irq11 - TIM1 Update/Overflow/Trigger/Break interrupt */  

    {0x82, (interrupt_handler_t)TIM1_CAP_COM_IRQHandler}, /* irq12 - TIM1 Capture/Compare interrupt */  

    

#ifdef STM8S903  

  {0x82, (interrupt_handler_t)TIM5_UPD_OVF_BRK_TRG_IRQHandler}, /* irq13 - TIM5 Update/Overflow/Break/Trigger interrupt  */  

  {0x82, (interrupt_handler_t)TIM5_CAP_COM_IRQHandler}, /* irq14 - TIM5 Capture/Compare interrupt */  

      

#else /*STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF62Ax or STM8AF52Ax or STM8AF626x*/  

  {0x82, (interrupt_handler_t)TIM2_UPD_OVF_BRK_IRQHandler}, /* irq13 - TIM2 Update/Overflow/Break interrupt  */  

  {0x82, (interrupt_handler_t)TIM2_CAP_COM_IRQHandler}, /* irq14 - TIM2 Capture/Compare interrupt */  

#endif /*STM8S903*/  

      

#if defined (STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8S105) || \  

    defined(STM8S005) ||  defined(STM8AF52Ax) || defined(STM8AF62Ax) || defined(STM8AF626x)  

  {0x82, (interrupt_handler_t)TIM3_UPD_OVF_BRK_IRQHandler}, /* irq15 - TIM3 Update/Overflow/Break interrupt */  

  {0x82, (interrupt_handler_t)TIM3_CAP_COM_IRQHandler}, /* irq16 - TIM3 Capture/Compare interrupt */  

#else  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq15 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq16 - Reserved */  

#endif /*STM8S208, STM8S207, STM8S105 or STM8AF62Ax or STM8AF52Ax or STM8AF626x*/  

      

#if defined (STM8S105) || defined (STM8S005) || defined(STM8AF626x)  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq17 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq18 - Reserved */  

#else  

    {0x82, (interrupt_handler_t)UART1_TX_IRQHandler}, /* irq17 - UART1 Tx complete interrupt */  

    {0x82, (interrupt_handler_t)UART1_RX_IRQHandler}, /* irq18 - UART1 Rx interrupt */  

#endif /*STM8S105 or STM8AF626x */  

    {0x82, (interrupt_handler_t)I2C_IRQHandler}, /* irq19 - I2C interrupt */  

  

#if defined(STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8AF52Ax) || defined(STM8AF62Ax)  

  

    {0x82, (interrupt_handler_t)UART3_TX_IRQHandler}, /* irq20 - UART3 Tx interrupt */  

    {0x82, (interrupt_handler_t)UART3_RX_IRQHandler}, /* irq21 - UART3 Rx interrupt */  

#elif defined (STM8S105) || defined (STM8S005) || defined (STM8AF626x)  

    {0x82, (interrupt_handler_t)UART2_TX_IRQHandler}, /* irq20 - UART2 Tx interrupt */  

    {0x82, (interrupt_handler_t)UART2_RX_IRQHandler}, /* irq21 - UART2 Rx interrupt */  

  

#else /* STM8S103, STM8S903 */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq20 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq21 - Reserved */  

#endif /* STM8S208, STM8S207, STM8AF52Ax or STM8AF62Ax */  

  

#if defined(STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8AF52Ax) || defined(STM8AF62Ax)  

    {0x82, (interrupt_handler_t)ADC2_IRQHandler}, /* irq22 - ADC2 end of conversion interrupt */  

#else /* STM8S105, STM8S103, STM8S903 */  

    {0x82, (interrupt_handler_t)ADC1_IRQHandler}, /* irq22 - ADC1 end of conversion/Analog watchdog interrupts */  

  

#endif /* STM8S208, STM8S207, STM8AF52Ax or STM8AF62Ax */  

  

#ifdef STM8S903  

    {0x82, (interrupt_handler_t)TIM6_UPD_OVF_TRG_IRQHandler}, /* irq23 - TIM6 Update/Overflow/Trigger interrupt */  

#else  

    {0x82, (interrupt_handler_t)TIM4_UPD_OVF_IRQHandler}, /* irq23 - TIM4 Update/Overflow interrupt */  

#endif /*STM8S903*/  

    {0x82, (interrupt_handler_t)EEPROM_EEC_IRQHandler},  /* irq24 - FLASH interrupt */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq25 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq26 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq27 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq28 - Reserved */  

    {0x82, (interrupt_handler_t)NonHandledInterrupt}, /* irq29 - Reserved */  

  

};  

  

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/  



关键字:STM8  STVD  中断向量表 引用地址:STM8在STVD下开发所需的中断向量表模版

上一篇:STM8单片机的中断控制(ITC)
下一篇:IAR for stm8使用标准固件库的方法以及注意事项

推荐阅读最新更新时间:2024-03-16 16:04

IAR for STM8 为何可以不配置时钟?
初学STM8,先是照着网上的教程建立了一个IAR工程,然后下载一个官方的固件库,搞了一个案例模板,功能超简单,就是一个LED灯闪烁,main函数就这么点内容: void main(void) { /* Initialize I/Os in Output Mode */ GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); while (1) { /* Toggles LEDs */ GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PI
[单片机]
stm8s之STVD中stm8s903k.h: No such file or directory问题解决
关键问题是找不到stm8s903k.h 那么stm8s903k.h到底在哪呢? 查一下STVD安装路径C:Program Files (x86)STMicroelectronicsst_toolsetinclude 相信您能找到超多的ST系列单片机之.h文件 stm8s903k.h也在其中 把stm8s903k.h的路径加进去,OK!
[单片机]
stm8s之<font color='red'>STVD</font>中stm8s903k.h: No such file or directory问题解决
开发STM8单片机,需要哪些开发工具?
使用STM8单片机开发自己的系统,在硬件开发工具方面,一般需要:仿真器、编程器,对于新手来说可能还需要开发板、学习板。软件方面需要对应的开发软件。 STM8的开发软件下载地址 STM8仿真器,编程器的介绍网址(点击查看),STM8开发板、学习板的介绍网址(点击查看) 下面先介绍一些与STM8开发工具相关的关键述语,在后面的使用中,您将会接触到。 问:STM8的仿真方式有哪些? 答:一般来说,STM8所有系列的单片机都是通过SWIM接口仿真。 问:STM8的编程方式有哪些? 答:一般来说,STM8所有系列的单片机都是通过SWIM接口编程。 问:什么是SWIM接口? 答:SWIM接口是STM8的调试系统的调试和
[单片机]
STM8单片机学习总结05-蓝牙模块
本次操作使用的“蓝牙模块”为“HC-06”,主要注意以下几点: 01)、“HC-06”(蓝牙模块)而言,其与“HC-05”一样,均采样“AT指令”控制,但需注意: i)、“HC-06”为“串口”连接,电压为“+5.0V”,“波特率”默认“9600”,“设备名称”默认“HC-06”,“配对密码”默认“1234”; ii)、“HC-06”发送“AT指令”时,末尾不需加“\r\n”(Enter键); iii)、需与“手机app”配合使用,推荐“蓝牙串口助手 Pro”; 02)、“HC-06”对应“AT指令”主要操作为以下4项: i)、“测试通信”:发送“AT”,返回“OK”; ii)、修改“波特率”:发送“AT+BAUDx”,“x”为“
[单片机]
STM8输入捕获
最近在用STM8的过程中需要用到一个频率检测的功能,还好STM8S207的定时器中自带有输入捕获功能,之前还想着用定时器计数方式来实现的,但既然人家提供了该功能,那就试试吧,由于硬件里面接的是PC1引脚就只看了Timer1,其他的定时器应该也是类似的,看了资料之后发现STM8的输入捕获其实与STC12C5A60S2中的PCA捕获模式很类似,但是看资料没有后者清晰易懂。。。 在捕获模式中,基本上只用到了读进程,在STM8中有一个影子寄存器,但对于我们来说是看不到的,我们仅操作预装载寄存器即可。而且需要注意的是无论是计数器还是捕获/比较寄存器都是先读/写高8位,后读/写低8位数据。 在文档中给出了一个输入捕获模式的流程
[单片机]
<font color='red'>STM8</font>输入捕获
STM8学习笔记——初步认识
最近项目要求找个便宜又够用的单片机,本来是想选STC的,但其实STC也并不便宜,且调试比较麻烦,而且AD不是很好,所以选择了STM8。昨天买来了ST-LINK III,拿了一块STM8S105S4,此单片机有16K ROM,2K RAM,1K的EEPROM,带10bitADC,定时器(ICOCPWM)和SPI I2C UART通讯接口,看门狗等,封装为LQFP44。 这款单片机的供电分得很细,主电源、IO口、模拟供电都分开,这样就可以非常灵活的配置,比如模拟供电可以选用5V以扩大量程;IO口可以配置位3.3或5V以适应一些设备。上图中VDD/VSS引脚用于给内部主电压调节器(MVR)和内部低功耗电压(LPVR)调节器供电
[单片机]
STM8 同时的和嵌套的中断管理
STM8S提供2种中断管理模式: 同时发生模式 嵌套模式 STM8同时发生中断管理模式 在该模式下,所有的中断的中断优先级都是3级,因此它们都是不可以被中断的(除了被TLI,RESET或TRAP中断之外)。 硬件的中断优先级按如下顺序排列,从低到高的优先级是:MAIN,IT4,IT3,IT2,IT1,IT0,TRAP/TLI(同等优先级)以及RESET。 图19所示是一个同时发生中断管理模式的例子。 (图18:同时发生中断管理模式) STM8嵌套中断管理模式 在该模式下,允许在中断子程序中响应中断。一旦一个中断的优先级被设置低于3级时该模式就立即有效。 硬件优先级从低到高按如下顺序给定,即MAIN,IT4,I
[单片机]
<font color='red'>STM8</font> 同时的和嵌套的中断管理
STM8】外挂存储器W25Q16
文章里面提到的页编程,就是写数据了,因为这是英文直译的结果(PageProgram) 为了测试这个外挂Flash存储器,我在淘宝买了一个小板,3元不到 其实也可以直接买芯片回来自己接,反正没几个元件 这个芯片是用SPI通讯的 我找不到没水印的图片,暂时先用W25Q128的 不过他俩板子长得一模一样,元件也一样。除了芯片型号 板子上的LED和电阻串联,上电后LED就亮,没别的意思 电容是滤波用的,它紧靠芯片的VCC引脚 另外附上两个链接,这是我之前写的博客,是关于『STM8开发环境』和『STM8 - SPI通讯』,这篇博客的测试基础,是建立在STM8上的 关于如何接线,SPI通讯这篇博客有提到,如果有需要可以观看 STM
[单片机]
【<font color='red'>STM8</font>】外挂存储器W25Q16
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved