STM8L051F3_02_EXTI应用

2019-12-14来源: eefocus关键字:STM8L051F3  EXTI

本章介绍STM8L051F3的EXTI相关知识,内容分为以下几部分:


EXTI简介

KEY外部中断检测

1、EXTI简介

EXTI也是属于GPIO的知识点,应用比较广泛。STM8L051F3每个I/O口在输入模式下都能配置为中断,在这个配置下,一个信号沿或电平输入到I/O口上将产生一个中断请求。外部中断只有在端口的输入模式下才有效。


可通过配置寄存器Px_CR2相应的位来独立地使能或禁能某个端口的外部中断功能。另外,可通过ADC_TDRH和ADC_TDRL寄存器来禁用施密特触发器节省功耗。


2、KEY外部中断检测

2.1 KEY的外部中断配置

本小节介绍将GPIO配置为外部中断输入模式,并通过KEY(PC4)来触发一个外部中断信号,然后产生中断,然后控制LED1的状态。使用的例程:STM8L051F3_02_EXTI。实现步骤:


1)初始化LED1为推挽输出模式(初始电平高)

2)初始化KEY为上拉输入&中断模式,并配置为下降沿触发


2.2 例程介绍

EXTI的初始化在exti.c文件中实现:


void EXTI_Init(void)


{


  // 配置KEY IO口为上拉输入&中断模式


  GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);


  //KEY引脚配置,下降沿触发;


  EXTI_SetPinSensitivity(EXTI_Pin_4, EXTI_Trigger_Falling);


}


EXTI(KEY)的端口定义在exti.h文件下:


#define KEY_GPIO_PORT  (GPIOC)


#define KEY_GPIO_PINS  (GPIO_Pin_4)


主函数中对LED于EXTI进行初始化后开启总中断:


void main(void)


{


  LED_Init();   //初始化LED1


  EXTI_Init();  //初始化KEY


  enableInterrupts();   //开总中断


while(1)


{


;


}


}


中断处理函数在stm8l15x_it.c文件下(该文件下还定义了delay_ms()函数):


INTERRUPT_HANDLER(EXTI4_IRQHandler,12)


{


    /* In order to detect unexpected events during development,


       it is recommended to set a breakpoint on the following instruction.


    */


   //延迟消抖


  delay_ms(10);


  //松手检测


while(GPIO_ReadInputDataBit(KEY_GPIO_PORT, KEY_GPIO_PINS)== 0);


  //切换LED1的状态


  GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);


  //清除中断标志位


  EXTI_ClearITPendingBit(EXTI_IT_Pin4);


}


使用ST-LINK把程序下载到开发板中,按下KEY可以改变LED1的状态。

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

上一篇:STM8L051之通过ADC1与DMA读取内部参考电压
下一篇:STM8L052C6硬件I2C调试:PCF8563/BM856时钟芯片

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

推荐阅读

STM8L051F3基础功能:内部时钟;TIM2定时器;串口及printf
STM8L051调试笔记之基础功能:系统时钟、串口、定时器都是基础而且必须的功能,这里放在一起统一记录,之所以用TIM2定时器,是因为想实现STM32的滴答定时器功能这些基础功能没什么好理解的,就直接贴代码了main.c:main.c:  void main(void)  {    enableInterrupts();    Sysclk_Init();    LED_Init();    Uart1_Init();          printf("
发表于 2019-12-14
STM8L051F3基础功能:内部时钟;TIM2定时器;串口及printf
STM8L051F3_0d_基础介绍
在开始学习外设使用之前,先了解一下STM8L051F3单片机系统中的基础部分:PWR(电源控制系统)、RST(复位系统)、CLK(时钟控制系统)。本节内容分为以下部分:PWR介绍RST介绍CLK介绍1、PWR介绍STM8L051F3是STM8L系列中属于低密度(low-density)产品,供电电压范围:1.8V~3.6V,供电的接口采用同一电源(VDD&VDDA&REF+接同一电源,只有一组电源输入引脚),系统电源供给框图如下:注:STM8L051F3没有DAC部分STM8L051F3具有上电复位(POR)/掉电复位(PDR)的功能。STM8L051F3内部有一个POR/PDR电路,可在1.5V以下运行,当检测
发表于 2019-12-12
STM8L051F3_0d_基础介绍
STM8L051F3_04_PWR应用
本章介绍STM8L051F3的PWR相关知识,并重点介绍它的低功耗模式与应用。内容分为以下几部分:低功耗模式介绍WFI模式应用1、低功耗模式介绍STM8L系列就是STM8的低功耗系列,所以该系列的主要特点就是低功耗。STM8L051F3低功耗模式如下图:注:在执行HALT指令之前,应用程序必须通过清除相应的外设中断配置寄存器的中断标志位来清除所有的外设中断,否则HALT指令不会被执行,程序继续往下执行。Wait mode(等待模式):Wait mode有两种:一种是WFI(通过中断方式唤醒);另一种是WFE(通过事件方式唤醒)。执行WFI或WFE即可进入到相应的Wait mode。在该模式下,振荡器是保持运行的,CPU是停止运行
发表于 2019-12-12
STM8L051F3_0c_新建工程
本文介绍基于IAR For STM8 + STM8L15x-16x-05x-AL31-L_StdPeriph_Lib(官方固件库)来新建STM8L051F3工程,STM8L的标准固件库可以到ST的官方网站中找到并下载,下载地址:http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm8-embedded-software/stsw-stm8016.html。1)把下载的标准固件库解压并打开,可以看到里面有如下内容:2)上图中带***星号的文件夹,里面的有部分内容是新建工程所需要的,在建立工程之前,先在桌面建一个
发表于 2019-12-12
STM8L051F3_0c_新建工程
STM8L051F3_03_CLK应用
本文介绍STM8L的CLK相关知识。内容分为以下几部分:CLK简介系统时钟频率切换1、CLK简介STM8L051F3的时钟控制系统设计时非常稳定的,同时也很容易使用,它可以使得MUC在低消耗下获仍然保持优性能。用户可以通过管理分配到CPU&外设的时钟来达到降低功耗。STM8L051F3有一个安全无干扰的时钟切换机制允许用户切换系统时钟源,同时可以通过预分频器来控制系统时钟频率。时钟结构图如下:注:STM8L051F3的Peripheral Clock enable是13 bit,没有LCD外设STM8L051F3的系统时钟源有以下4种:16MHz内部高速(出厂已校准)RC时钟HSI1~16MHz外部高速振荡器时钟
发表于 2019-12-11
STM8L051F3_03_CLK应用
STM32-EXTI中断的分析及应用
EXTI中断/事件控制器,管理了控制器的20根中断/事件线。每个对应了一个边沿检测器,可以实现输入信号的上升沿或者下降沿检测,EXTI可以实现对每个中断或者事件的单独配置这里中断通常是指GPIO的中断   事件可以是AD/DA转换  TIM定时器等···通过书上的EXTI 功能框图可以清楚的知道配置EXTI中断的具体过程这里拿EXTI控制GPIO为例:编程要领:1)初始化用来产生中断的GPIO2)初始化EXTI3)配置NVIC4)编写中断函数这里只贴出配置EXTI和中断函数的编写:void EXTI_Key_config(void){ GPIO_InitTypeDef
发表于 2020-01-13
STM32-EXTI中断的分析及应用
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved