STM8L51X gpio中断

2020-03-01来源: eefocus关键字:STM8L51X  gpio  中断

本文采用官方的库函数接口实现STM8L51X gpio中断


STM8L51X的中断向量入口函数都放在stm8l51x_it.c里面。


不同的中断对应的中断号如下(在stm8l51x_itc。h里面):


typedef enum {


     FLASH_IRQn                              = (uint8_t)1,   /*!< Flashinterrupt  */


     DMA1_CHANNEL0_1_IRQn                    = (uint8_t)2,   /*!< DMAChannels 0/1 */


     DMA1_CHANNEL2_3_IRQn                    = (uint8_t)3,   /*!< DMAChannels 2/3 */


     EXTIE_F_PVD_IRQn                        = (uint8_t)5,   /*!< GPIOE/Fand PVD interrupt */


     EXTI0_IRQn                              = (uint8_t)8,   /*!< PIN0 interrupt   */


     EXTI1_IRQn                              = (uint8_t)9,   /*!< PIN1interrupt   */


     EXTI2_IRQn                              = (uint8_t)10,  /*!< PIN2interrupt   */


     EXTI3_IRQn                              = (uint8_t)11,  /*!< PIN3interrupt   */


     EXTI4_IRQn                              = (uint8_t)12,  /*!< PIN4interrupt   */


     EXTI5_IRQn                              = (uint8_t)13,  /*!< PIN5interrupt   */


     EXTI6_IRQn                              = (uint8_t)14,  /*!< PIN6interrupt   */


     EXTI7_IRQn                              = (uint8_t)15,  /*!< PIN7interrupt   */


     ADC1_COMP_IRQn                          = (uint8_t)18,  /*!


     TIM4_UPD_OVF_TRG_IRQn                   = (uint8_t)25,  /*!< TIM4Update/Overflow/Trigger interrupt */


     SPI1_IRQn                               = (uint8_t)26,  /*!< SPI1interrupt */


     #if defined (STM8L15X_MD) || defined(STM8L05X_MD_VL) || defined (STM8AL31_L_MD)


     RTC_IRQn                                = (uint8_t)4,   /*!< RTCinterrupt    */


     EXTIB_IRQn                              = (uint8_t)6,   /*!< GPIOBinterrupt  */


      EXTID_IRQn                              = (uint8_t)7,   /*!< GPIODinterrupt  */


      LCD_IRQn                                = (uint8_t)16,  /*!< LCD Driverinterrupt    */


         SWITCH_CSS_BREAK_DAC_IRQn                = (uint8_t)17,  /*!< Clock switch/CSS interrupt/TIM1 Break/DAC  interrupt */


      TIM2_UPD_OVF_TRG_BRK_IRQn               = (uint8_t)19,  /*!< TIM2Update/Overflow/Trigger/Break interrupt*/


      TIM2_CC_IRQn                            = (uint8_t)20,  /*!< TIM2 inputcaptute/output compare interrupt  */


      TIM3_UPD_OVF_TRG_BRK_IRQn               = (uint8_t)21,  /*!< TIM3Update/Overflow/Trigger/Break interrupt */


      TIM3_CC_IRQn                            = (uint8_t)22,  /*!< TIM3capture/compare interrupt  */


         TIM1_UPD_OVF_TRG_IRQn                    = (uint8_t)23,  /*!< TIM1 TIM1 Update/Overflow/Triggerinterrupt */


      TIM1_CC_IRQn                             = (uint8_t)24,  /*!< TIM1 capture/compare interrupt  */


      USART1_TX_IRQn                          = (uint8_t)27,  /*!< USART1 TXinterrupt */


      USART1_RX_IRQn                          = (uint8_t)28,  /*!< USART1 RXinterrupt */


      I2C1_IRQn                                = (uint8_t)29   /*!< I2C1 interrupt */


     #elif defined (STM8L15X_LD) || defined(STM8L05X_LD_VL)


      RTC_CSSLSE_IRQn                         = (uint8_t)4,   /*!< RTC /CSSLSE interrupt    */


      EXTIB_IRQn                              = (uint8_t)6,   /*!< GPIOB interrupt  */


      EXTID_IRQn                              = (uint8_t)7,   /*!< GPIODinterrupt  */


         SWITCH_CSS_IRQn                          = (uint8_t)17,  /*!< Clock switch/CSS interrupt/TIM1 Break/DAC  interrupt */


      TIM2_UPD_OVF_TRG_BRK_IRQn               = (uint8_t)19,  /*!< TIM2Update/Overflow/Trigger/Break interrupt*/


      TIM2_CC_IRQn                            = (uint8_t)20,  /*!< TIM2 inputcaptute/output compare interrupt  */


      TIM3_UPD_OVF_TRG_BRK_IRQn               = (uint8_t)21,  /*!< TIM3 Update/Overflow/Trigger/Breakinterrupt */


      TIM3_CC_IRQn                            = (uint8_t)22,  /*!< TIM3capture/compare interrupt  */


      USART1_TX_IRQn                          = (uint8_t)27,  /*!< USART1 TXinterrupt */


      USART1_RX_IRQn                          = (uint8_t)28,  /*!< USART1 RXinterrupt */


     I2C1_IRQn                               = (uint8_t)29   /*!< I2C1interrupt */


     #elif defined (STM8L15X_HD) || defined(STM8L15X_MDP) || defined (STM8L05X_HD_VL)


       RTC_CSSLSE_IRQn                          = (uint8_t)4,   /*!< RTC / CSSLSE interrupt    */


      EXTIB_G_IRQn                            = (uint8_t)6,   /*!< GPIOB / Ginterrupt  */


      EXTID_H_IRQn                            = (uint8_t)7,   /*!< GPIOD / Hinterrupt  */


      LCD_AES_IRQn                            = (uint8_t)16,  /*!< LCD / AESinterrupt    */


         SWITCH_CSS_BREAK_DAC_IRQn                = (uint8_t)17,  /*!< Clock switch/CSS interrupt/TIM1 Break/DAC  interrupt */


      TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQn     = (uint8_t)19,  /*!< TIM2Update/Overflow/Trigger/Break /USART2 TX interrupt*/


      TIM2_CC_USART2_RX_IRQn                  = (uint8_t)20,  /*!< TIM2capture/compare / USART2 RX interrupt  */


      TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQn     = (uint8_t)21,  /*!< TIM3Update/Overflow/Trigger/Break / USART3 TX interrupt */


      TIM3_CC_USART3_RX_IRQn                  = (uint8_t)22,  /*!< TIM3capture/compare / USART3 RX interrupt  */


         TIM1_UPD_OVF_TRG_IRQn                    = (uint8_t)23,  /*!< TIM1 TIM1 Update/Overflow/Triggerinterrupt */


TIM1_CC_IRQ

[1] [2]
关键字:STM8L51X  gpio  中断 编辑:什么鱼 引用地址:http://news.pyfle.com/mcu/ic490062.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8 IO口的位操作
下一篇:STM8L编程环境官方库+STVD+COSMIC+ST-Link

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

[MSP430] 2.中断和计时器
在这一部分中我们将会初步了解到中断的概念及其作用, 我们会尝试使用计时器中断和 I/O 中断操作 LED 灯,让我们开始吧!什么是中断?我们可以将它理解为一个约定的信号,来告知单片 机特定的事件发生了,引起程序从正常运行的主函数中断开,转而 执行中断处理程序,处理特定的事件。中断是一个非常重要的概念,它可以让处理器免于执行冗余的轮 询操作等待特定的外部事件的发生。在 MSP430 的架构中,有许 多种类的中断:计时器中断,I/O 中断,ADC 中断等等。每一种中 断在使用前都要使能和配置,每一种中断又分别有中断处理程序 (Service Routine)。下面就让我们尝试写一个小程序,实现使用计时器中断和 I/O 中 断操作
发表于 2020-03-10
6410 ad 中断读取数据
中断读取数,写之前一直在datasheet中找不出是什么触发中断,后来发现,数据转换完成后就触发中断。所以对相应的中断进行初始化后,打开ad转换,就可以了。相关的register:adccon:set ad channal,转换频率(prescaler value),prescaler enable,addcon【0】 enable ad conversion;adcdatax :对应的data in itadcclrint: clear interrupt ad然后就是相关的vic的一些register了,对应的初始化就行了;参考代码:#include "gpio.h"#include "
发表于 2020-03-09
intrupt 6410裸机中断
我之前研究了6410的io口中断,想对着datasheet写出中断程序,但是发现,我虽然对着datasheet可以知道他每个register的作用,但是它们之间的关联并不是很清楚,于是查了不少的资料。发现要编一个简单的按键控制io口的中断,其实在6410中很容易就实现了,大致可以这样:1.初始化io口的register:包括:gpioXcon,EINT0CON0,EINT0MASK,EINT0PEND2,初始化中断register: vicxINTENABLE , VIC0VECTADDR这个链接介绍裸机中断也不错:点击打开链接下面是我编写的中断控制 蜂鸣器的程序:建议一定要亲自动手写一下,写不出来再看示例,那样效果绝对不
发表于 2020-03-09
外部震荡源中断的计时实验
简介:cd4060和2.048M晶体构成的方波震荡源用500Hz的输出连到ATmega16的PD3 ,INT1中断500次是1秒构成计时基准。PA0-PA7 连到八段数码管的a-p ,PC0-PC5 分别连六个数码管的共阴极c程序:/*****************************************************This program was produced by theCodeWizardAVR V2.05.5a EvaluationDate : 2011/12/14Author : Freeware, for evaluation andnon-commercial use onlyChip
发表于 2020-03-08
【ARM裸板】软件中断分析及示例
1.APP如何切换模式APP一般运行于User Mode下,受到限制(例如不可访问硬件)如果APP想要访问硬件,必须切换模式如何切换?发生异常即可:软中断,swi #val中断未定义指令异常2.SWI中软处理过程执行异常处理函数之前,硬件会处理的事情: 1.lr_svc保存有被中断模式中的下一条即将执行的指令的地址 2.SPSR_svc保存被中断模式CPSR 3.CPSR的[M4:M0]=[11011],进入到svc模式 4.跳到0x08的模式执行程序,即跳到b do_svc这一指令/*====================================异常
发表于 2020-03-06
【ARM裸板】软件中断分析及示例
【ARM裸板】按键外部中断过程及示例
1.初始化设置中断源(让它能发出中断信号)设置中断控制器(让它能发出中断信号给CPU)设置CPU总开关(CPSR有I位,设置总开关,使能中断)处理时要分辨中断源处理完要清中断1.1 中断源设置按键为中断源引脚配置引脚为外部中断模式配置中断为下降沿触发配置外部中断MASK使能//初始化外部中断,设置按键为中断源void key_eint_init(void){ /* 引脚:GPF0、2   GPG3、11 */ /* 中断:EINT0、2  EINT11、19*/ GPFCON &= ~((3<<0) | (3<<4)); //清零 GPFCON |= 
发表于 2020-03-06
【ARM裸板】按键外部中断过程及示例
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
快乐赛车怎么能接代理 快乐赛车单双 快乐赛车直播开奖视频 快乐飞艇代理 快乐飞艇怎么玩才能赢 全天快乐赛车人工计划 快乐赛车代理怎么挣钱 秒速赛车登陆 5分钟一开的快乐飞艇 快乐飞艇怎么玩能赢