历史上的今天
返回首页

历史上的今天

今天是:2024年12月11日(星期三)

正在发生

2018年12月11日 | STM8中断向量表

2018-12-11 来源:eefocus

// 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 

};


推荐阅读

史海拾趣

Ferroperm公司的发展小趣事

Ferroperm公司非常重视产品的品质管理。他们建立了严格的质量管理体系,从原材料采购到产品生产、检测等各个环节都实行严格的质量控制。同时,Ferroperm还注重持续改进,不断引进先进的生产设备和检测技术,提高产品的质量和性能。这种对品质的执着追求使得Ferroperm的产品在市场上获得了良好的口碑和信誉。

振华(CEC)公司的发展小趣事

为了进一步提升企业的竞争力和市场份额,振华积极实施国际化战略。公司加强与国外企业的合作与交流,积极参与国际市场竞争,通过引进外资、设立海外研发机构等方式,不断拓展海外市场。同时,振华还注重提升产品的国际竞争力,加强与国际标准的对接和认证工作,确保产品能够满足不同国家和地区的市场需求。

科达嘉CODACA公司的发展小趣事

随着电子行业的快速发展,科达嘉意识到技术革新是企业持续发展的关键。因此,公司不断增加自动化生产设备,购置先进的质量测试仪器,并筹建了电感元器件分析实验室和标准的AEC-Q200可靠性实验室。这些举措大大增强了公司的研发分析能力,提升了产品质量和生产效率。科达嘉逐渐形成了以材料研发、产品研发、生产、质量及物控为基础的完整产业链。

冠图电子(GTL-POWER)公司的发展小趣事

随着电子行业的快速发展,科达嘉意识到技术革新是企业持续发展的关键。因此,公司不断增加自动化生产设备,购置先进的质量测试仪器,并筹建了电感元器件分析实验室和标准的AEC-Q200可靠性实验室。这些举措大大增强了公司的研发分析能力,提升了产品质量和生产效率。科达嘉逐渐形成了以材料研发、产品研发、生产、质量及物控为基础的完整产业链。

EIC [EIC discrete Semiconductors]公司的发展小趣事

在国内市场取得一定成绩后,EIC公司开始将目光投向国际市场。公司积极参加国际电子展会,与国际知名企业进行技术交流与合作,不断拓展海外市场。通过国际化战略的实施,EIC的产品逐渐进入了欧洲、北美等发达国家和地区,并在当地建立了完善的销售和服务网络。这一过程中,EIC不仅提升了品牌影响力,也积累了丰富的国际化运营经验。

Ambersil公司的发展小趣事

Ambersil公司深知人才是企业发展的核心力量。因此,公司一直注重人才培养和引进。公司建立了完善的人才培养和激励机制,鼓励员工不断学习和创新。同时,公司还积极引进外部优秀人才,为公司的发展注入新的活力。这些举措使得Ambersil公司的团队更加专业、高效,为公司的未来发展奠定了坚实的基础。

以上五个故事虽然基于虚构,但其中的元素和情节在电子行业的发展历程中并不罕见。它们或许能够为您了解电子行业内的公司发展提供一定的参考。如果需要更具体、更详细的故事,建议查阅相关公司的官方资料或行业报告。

问答坊 | AI 解惑

程控音频功率放大器

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 程控音频功率放大器怎么做啊!有知道的没?  …

查看全部问答>

一款30MHz频段无线收发电路

30MHzp频段无线收发简单电路的资料比较少,是因为这个频段传输速率受到很大的限制.。这个收发电路使用3V供电,使用直径34MM的电感线圈作为收发的共用天线,使用半双工收发,距离可以到数十米远,现把电路传上,仅共参考。 发现问题及时交流。…

查看全部问答>

[原创]经典4乘4键盘程序下载(C语言)

[原创]经典4乘4键盘程序下载(C语言)…

查看全部问答>

0

攒分赚人品谢谢清洁工和大兔子…

查看全部问答>

调试S3C2410BSP串口出现乱码。求助

我用DNW终端。出现乱码后。我点击serial port下的connect出先RXTX-RHRED-ERR.而且是不停的出现.请问高手是什么原因…

查看全部问答>

STM3有智能卡协议,可以不用非接触芯片531?

                                 STM3有智能卡协议,是不是可以不用非接触芯片531,就可以实现读卡操作?…

查看全部问答>

关于虚拟机安装系统的使用

我用虚拟机安装了 红帽子系统,那么可以再windos和linux 下来回切换么?就是一面看着pdf的教学贴,一面操作么?…

查看全部问答>

50Hz陷波电路设计

要求: 1、截止带宽为:40Hz~60Hz。 2、中心频率50Hz最大陷波深度大于-40dB。…

查看全部问答>

发一个msp430的视频教程,郭天祥老师讲的,绝对清晰。

下载连接是:http://www.kuaipan.cn/file/id_11585566906778290.htm 我是用金山快盘共享的,没有快盘的朋友先注册一个:http://www.kuaipan.cn/account_register.htm?channel=dhq2xg…

查看全部问答>

关于MSP430G2553的SPI功能

我想用LAUNCHPAD的硬件SPI驱动某个外设。我想采用三线模式,后来CS片选信号由自己控制拉低拉高。是否可行…

查看全部问答>