STM8中断向量表

发布者:缘到泉最新更新时间:2018-12-11 来源: eefocus关键字:STM8  中断向量表 手机看文章 扫描二维码
随时随地手机看文章

// Copyright (c) 2009, Wolver Wang, Innov Inc. R&D Center

// wolver@21com.com

// All rights reserved.

//

// Redistribution and use in source and binary forms, with or without

// modification, are permitted provided that the following conditions

// are met:

// 1. Redistributions of source code must retain the above copyright

//    notice, this list of conditions and the following disclaimer.

// 2. Redistributions in binary form must reproduce the above copyright

//    notice, this list of conditions and the following disclaimer in the

//    documentation and/or other materials provided with the distribution.

// 3. All advertising materials mentioning features or use of this software

//    must display the following acknowledgement:

//      This product includes software developed by Wolver Wang.

// 4. The name of the author may not be used to endorse or promote

//    products derived from this software without specific prior

//    written permission.

//

// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS

// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED

// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

// ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY

// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE

// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS

// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

///

 

// Go to Project/settings/linker => select catergory 'input". 

// Here by right click on Segment/section name, you can create 

// a new segment 'UserApp' and then create a section '.usr_tab' 

// under this segment. Then allocate the address to this segment/section. 

  

// Includes ------------------------------------------------------------------

 

//----------------------------------------------------------------------------

 

 

// Exported macro ------------------------------------------------------------

 

//----------------------------------------------------------------------------

 

 

 

// Exported types ------------------------------------------------------------

 

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

 

struct interrupt_vector {

        unsigned int interrupt_instruction;

        interrupt_handler_t interrupt_handler;

};

 

// Exported functions ------------------------------------------------------- 

 

extern @near void _stext();                                                                                                                                                                     // startup routine

 

extern @near @interrupt void TRAP_IRQHandler(void);                                                                // TRAP

extern @near @interrupt void TLI_IRQHandler(void);                                                                        // TLI

extern @near @interrupt void AWU_IRQHandler(void);                                                                        // AWU

extern @near @interrupt void CLK_IRQHandler(void);                                                                        // CLOCK

extern @near @interrupt void EXTI_PORTA_IRQHandler(void);                                        // EXTI PORTA

extern @near @interrupt void EXTI_PORTB_IRQHandler(void);                                        // EXTI PORTB

extern @near @interrupt void EXTI_PORTC_IRQHandler(void);                                        // EXTI PORTC

extern @near @interrupt void EXTI_PORTD_IRQHandler(void);                                        // EXTI PORTD

extern @near @interrupt void EXTI_PORTE_IRQHandler(void);                                        // EXTI PORTE

extern @near @interrupt void CAN_RX_IRQHandler(void);                                                        // CAN RX

extern @near @interrupt void CAN_TX_IRQHandler(void);                                                        // CAN TX/SCE

extern @near @interrupt void SPI_IRQHandler(void);                                                                 // SPI

extern @near @interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void);// TIM1 UPD/OVF/TRG/BRK

extern @near @interrupt void TIM1_CAP_COM_IRQHandler(void);                                 // TIM1 CAP/COM

extern @near @interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void);                // TIM2 UPD/OVF/BRK

extern @near @interrupt void TIM2_CAP_COM_IRQHandler(void);                                 // TIM2 CAP/COM

extern @near @interrupt void TIM3_UPD_OVF_BRK_IRQHandler(void);                 // TIM3 UPD/OVF/BRK

extern @near @interrupt void TIM3_CAP_COM_IRQHandler(void);                                 // TIM3 CAP/COM

extern @near @interrupt void USART_TX_IRQHandler(void);                                                 // USART TX

extern @near @interrupt void USART_RX_IRQHandler(void);                                                 // USART RX

extern @near @interrupt void I2C_IRQHandler(void);                                                                 // I2C

extern @near @interrupt void LINUART_TX_IRQHandler(void);                                         // LINUART TX

extern @near @interrupt void LINUART_RX_IRQHandler(void);                                         // LINUART RX

extern @near @interrupt void ADC_IRQHandler(void);                                                                 // ADC

extern @near @interrupt void TIM4_UPD_OVF_IRQHandler(void);                                 // TIM4 UPD/OVF

extern @near @interrupt void FLASH_IRQHandler(void);                                                         // FLASH CHECK

extern @near @interrupt void NonHandledInterrupt (void);                                                // Unexpected events

 

 

// Exported constants --------------------------------------------------------

 

// Redirected constant section to usr_tab: 0x8100-0x8180

#pragma section const {usr_tab}

struct interrupt_vector const UserISR_IRQ[32]  = {

        {0x8200, (interrupt_handler_t)_stext},                                                                                                         // reset

        {0x8200, (interrupt_handler_t)TRAP_IRQHandler},                                                                 // trap  - Software interrupt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        {0x8200, (interrupt_handler_t)USART_TX_IRQHandler},                                                 // irq17 - USART Tx complete interrupt

        {0x8200, (interrupt_handler_t)USART_RX_IRQHandler},                                                 // irq18 - USART Rx interrupt

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

        {0x8200, (interrupt_handler_t)LINUART_TX_IRQHandler},                                         // irq20 - LINUART Tx interrupt

        {0x8200, (interrupt_handler_t)LINUART_RX_IRQHandler},                                         // irq21 - LINUART Rx interrupt

        {0x8200, (interrupt_handler_t)ADC_IRQHandler},                                                                         // irq22 - ADC end of conversion interrupt

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

        {0x8200, (interrupt_handler_t)FLASH_IRQHandler},                                                                 // irq24 - FLASH interrupt

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

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

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

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

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

};

 

// Restore default section

#pragma section const {}

// System interrupt table: 0x8000-0x8080

struct interrupt_vector const _vectab[] = {

        {0x8200, (interrupt_handler_t)_stext},                                                 // reset

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 1)},         // trap  - Software interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 2)},         // irq0  - External Top Level interrupt (TLI)  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 3)},        // irq1  - Auto Wake Up from Halt interrupt   

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 4)},        // irq2  - Clock Controller interrupt  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 5)},        // irq3  - External interrupt 0 (GPIOA)  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 6)},        // irq4  - External interrupt 1 (GPIOB)  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 7)},         // irq5  - External interrupt 2 (GPIOC)  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 8)},         // irq6  - External interrupt 3 (GPIOD)  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 9)},         // irq7  - External interrupt 4 (GPIOE)  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 10)}, // irq8  - CAN Rx interrupt  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 11)}, // irq9  - CAN Tx/ER/SC interrupt  

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 12)}, // irq10 - SPI End of transfer interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 13)}, // irq11 - TIM1 Update/Overflow/Trigger/Break interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 14)}, // irq12 - TIM1 Capture/Compare interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 15)}, // irq13 - TIM2 Update/Overflow/Break interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 16)}, // irq14 - TIM2 Capture/Compare interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 17)}, // irq15 - TIM3 Update/Overflow/Break interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 18)}, // irq16 - TIM3 Capture/Compare interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 19)}, // irq17 - USART Tx complete interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 20)}, // irq18 - USART Rx interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 21)}, // irq19 - I2C interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 22)}, // irq20 - LINUART Tx interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 23)}, // irq21 - LINUART Rx interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 24)}, // irq22 - ADC end of conversion interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 25)}, // irq23 - TIM4 Update/Overflow interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 26)}, // irq24 - FLASH interrupt

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 27)}, // irq25 - Reserved 

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 28)}, // irq26 - Reserved 

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 29)}, // irq27 - Reserved 

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 30)}, // irq28 - Reserved 

        {0x8200, (interrupt_handler_t)(UserISR_IRQ+ 31)}, // irq29 - Reserved 

};


关键字:STM8  中断向量表 引用地址:STM8中断向量表

上一篇:KEIL编译器区分RW-data和ZI-data
下一篇:单片机中ICP和ISP有哪些不同?

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

stm8笔记3-ad连续采样
一:主要功能 1,10位的分辨率 2,单次和连续转换模式。单次转换模式,转换一次就停止转换;连续转换模式,一旦开启,一直转换。 3,预分频可编程设置。adc时钟可由系统主时钟经分频后提供。 4,可以选择外部中断(ASC_ETR)或者定时器触发信号(TRGO)作为A/D转换启动触发信号。不仅可以手动开启ADC转换,也可由外部中断或者TIM1的触发信号来开启。 5,参考电压输入的两个引脚的电压范围:0V =VREF- =0.5V,2.7V =VREF+ =VDDA。 6,转换结束后可以产生中断,可以设置寄存器开启转换结束中断。 7,数据对齐方式有左对齐和右对齐。 二:寄存器介绍 1,ADC控制/状态寄存器(ADC_CSR) 2,
[单片机]
<font color='red'>stm8</font>笔记3-ad连续采样
意法半导体STM8微控制器出货量突破20亿大关
横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)宣布,其稳健且多用途的STM8微控制器在出货量达10亿颗之后不到两年,进一步突破20亿颗大关,其中大陆市场表现特别突出。 世界半导体贸易统计协会(World Semiconductor Trade Statistics;WSTS)的最新报告显示,在STM8微控制器快速成长的出货量推动下,意法半导体通用微控制器的市占率从2013年的8.2%成长至2015年的12.7%。意法半导体微控制器行销总监Daniel Colonna表示: STM8已成为市场上最受欢迎的微控制器产品,是我们市场策略的坚固根
[单片机]
8位MCU将消失?你想错了
8位微控制器能否再经历一场复兴? 随着ARM处理器架构的兴起和32位微控制器的广泛应用,人们很容易假设,随着32位处理器芯片的价格和功耗的下降,采用8位MCU进行设计已经变得越来越没有竞争力了。 但现实情况并非如此。Microchip、Atmel和意法半导体等芯片供应商比以往任何时候更致力于完善和升级自己的8位微控制器,并正为其添加高性能外设和扩展开发工具。 微芯科技(Microchip)的Lucio Di Jasio提到:“我们不会将8位微控制器做低价化处理,相反,我们正在加大对8位PIC系列单片机的投资,以把它应用在新的更高性能的应用中”。 对于高端电机控制是否真的需要一个32位ARM微控制器或一个基于M
[单片机]
STM8内部存储器结构及编程
一.STM8内部存储器结构 二.端口及外设存储区 从0X005050开始到0X0057FF结束的区间内存储的是外设的寄存器。包括:flash、ITC终端资源、RST复位、CLK时钟、WWDG窗口看门狗、IWDG独立看门狗、AWU自动唤醒单元、BEEP蜂鸣器、SPI、I2C、UART、TIM定时器、ADC、beCAN等。 三.32级中断向量 第二部分 对内部存储器编程 对存储器编程就是对存储器对应的功能寄存器的操作, 主要是为了操作flash rom、EEPROM、选线字节等存储器资源。 存储器对应的功能寄存器分为以下3各大类: 这8个寄存器每个都在stm8XXXXX.h中定义好了。我们只需读懂其每一位的意义。 附
[单片机]
<font color='red'>STM8</font>内部存储器结构及编程
STM8红外捕获解析 使用TIM1 16位高级控制定时器
TIM1 16位高级控制定时器 高级控制定时器具有不同的用途: 1、基本的定时。 2、测量输入信号的脉冲宽度(输入捕获) 3、产生输出波形(输出比较,PWM和单脉冲模式) 4、对应不同的事件(捕获、比较、溢出、刹车、触发)的中断。 高级控制定时器的时钟源可以是内部时钟,也可以是外部的信号,可以通过配置寄存器来进行选择。 多达4个独立通道可以配置 1、输入捕获 2、输出比较 3、PWM生成 4、单脉冲模式输出 static void TIM1_Init(void) { /* Set the Prescaler value */ TIM1- PSCRH = (u8)(Prescaler_t
[单片机]
STM8 PCF8591 AD/DA转换子程序
软件设计 /********************************************************************* 目 的: 建立PCF8591操作库 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/ #include ws_i2c.h #define MODE0 0x00 #define MODE1 0x10 #define MODE2 0x20 #define MODE3 0x30 #define CHNL0 0 #d
[单片机]
STM8 基本定时器初始化Time4
void Time4_Initialize(void) { TIM4_TimeBaseInit(TIM4_PRESCALER_64,24); //100μS TIM4_ITConfig(TIM4_IT_UPDATE,ENABLE); TIM4_ClearFlag(TIM4_FLAG_UPDATE); } STM8基本定时器: TIM4_PRESCALER_64:预分频 24:计数周期,从零开始计数. 注意:若是立即启动计数,则在函数里添加TIM4_Cmd(ENABLE),否则在延时处开启.
[单片机]
STM8 定时器 TIM 中断进入不了
我用的是IAR编译器,昨晚弄了下STM8,发现跟STM32的风格挺像的,所以上手也很快。 今天弄了下TIM4定时器,中断死活进入不了,弄了好久,查了中断号、服务函数啥的,最后发现问题是: 我原来大意 直接复制过去的代码是 void TIM4_Init(void); IAR居然没给我报错。。搞发查了好久才发现问题,这条语句无法正常执行。
[单片机]
<font color='red'>STM8</font> 定时器 TIM 中断进入不了
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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