STM8S_009_ EXTI外部中断

发布者:科技狂人最新更新时间:2020-07-13 来源: 51hei关键字:STM8S  EXTI  外部中断 手机看文章 扫描二维码
随时随地手机看文章

有人问

我使用EXIT唤醒芯片,没什么没有触发中断,芯片却唤醒了?


Ⅰ写在前面

使用STM8S开发过上面类似功能的朋友应该会知道,STM8S的稳定性不如STM32,特别是在低功耗时,使用EXTI外部中断唤醒,很容易受到干扰信号而唤醒。因此,这种情况需在硬件电路上多加考虑抗干扰的电路。


其次,就是注意软件的上下拉配置,如果外部加了上拉或下拉电阻,不建议再配置成上拉或下拉;如果没有,建议加上。要使其软件稳定,还得深入EXTI的功能。


ⅡEXTI基础知识

STM8S的EXTI外部中断归属于GPIO一类,只需要将其IO配置成外部中断、使能全局中断、在中断入口函数添加相关的代码即可。


开启中断功能


在EXTI_CR[2:1]寄存器中对于每一个中断向量都可以独立编程为上升沿或下降沿触发。

外部中断只有在对应I/O口被设置为输入模式下才有效。


屏蔽中断功能

可以通过对Px_CR2寄存器的相应位进行编程来单独使能/关闭外部中断功能。复位后外部中断是关闭的。


提示:EXTI外部中断只有在IO输入模式下才有效,配置才输出模式,不能正常由外部触发中断。


Ⅲ软件工程源代码

1.关于工程

本文提供的工程代码是基于前面软件工程“STM8S-A04_UART基本收发数据”增加EXTI外部中断修改而来。初学的朋友可以参看我前面对应的基础文章,那些文章讲的比较详细。

2.EXTI引脚配置

我们尚且定义为按键KEY,浮动输入,中断模式。

#define KEY_GPIO_PORT  GPIOD

#define KEY_GPIO_PIN  GPIO_PIN_2

GPIO_Init(KEY_GPIO_PORT, (GPIO_Pin_TypeDef)KEY_GPIO_PIN, GPIO_MODE_IN_FL_IT);

3.EXTI中断配置

void EXTI_Configuration(void)

{

EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_ONLY);

EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);

}

这个地方配置成下降沿中断,端口需对应引脚的端口。


4.中断入口函数

#define KEY_READ    GPIO_ReadInputPin(KEY_GPIO_PORT, KEY_GPIO_PIN)

INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6)

{

if(RESET == KEY_READ)

{

IT_Delay(50);                          //延时消抖

if(RESET == KEY_READ)     //确认按下

{

LED_REVERSE;                   //改变LED状态

}

}

}

提示:我们使用的GPIOD,入口需要对应。


Ⅳ下载

STM8S资料:

http://pan.baidu.com/s/1o7Tb9Yq

软件源代码工程两版本(STM8S-A09_EXTI外部中断):

http://pan.baidu.com/s/1c2EcRo0

关键字:STM8S  EXTI  外部中断 引用地址:STM8S_009_ EXTI外部中断

上一篇:浅谈STM8S_008_WDG独立看门狗和窗口看门狗
下一篇:STM8S_010_I2C读写EEPROM (硬件方式)

推荐阅读最新更新时间:2024-11-07 11:50

STM32F051 写外部中断步骤
STM32F051的中断特性如下: Cortex - M0的中断系统比较复杂,要想系统能响应中断,整体的配置步骤也多,下面以GPIOA0外接一个BUTTON,电路如下: 设置中断的步骤如下: void SysInitConfig(void) //中断寄存器配置,及中断引脚的配置 { RCC- AHBENR |= 1 17; //使能GPIOA的时钟 GPIOA- MODER &= ~(0x03 1);//置GPIOA0为输入模式 RCC- APB2ENR |= 1 0; //使能SYSCFG时钟 SYSCFG- EXTICR = 0 0; //配置GPIOA0为外部中断0 EXT
[单片机]
STM32F051 写<font color='red'>外部中断</font>步骤
单片机STM32的几种输入模式以及外部中断的配置
最近做毕业设计,需要用按键来触发外部中断。实验的时候是正常的,但是换了个核心板以及用上自己做的PCB电路板后,出现了一些问题。问题如下: 要求:将连接按键的IO口配置为上拉输入,按键一端接IO口,一端接地,即当按键按下后,该IO口会产生一个下降沿,触发下降沿中断。 问题:将相应的IO口配置好后,测了引脚的的电压,并不是3.3V左右,而是0.1V左右。于是猜想: 1. 外围电路对IO口产生了影响。 2. STM32 内部上拉能力较弱,一次只能上拉一个IO口。 于是开始从这两个想法着手解决。首先第一个,很容易就排除了。将外围电路撤掉,我用的是杜邦线,直接拔掉测量引脚上的电压,依然是0.1V左右,于是第1个猜想排除。
[单片机]
STM32学习笔记(2):外部中断的使用
中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大大增加,而且中断的设置也更加复杂。今天就将来探讨一下关于STM32中的中断系统。 1 基本概念 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PR
[单片机]
【51单片机】外部中断
51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是并行工作的,就是主程序在运行的时候,中断也在等待触发条件,当中断被触发的时候会暂停主程序转而执行中断服务程序,只有中断服务程序执行完后,才会继续执行主程序。 这里的触发条件是指:低电平或者下降沿,满足条件后会才执行中断函数。 说到这里就要提一下,51只有2个外部中断:P3^2口——外部中断0 P3^3口——外部中断1 其它I/O口不能作为外部中断使用 来看图: 上图从左到右介绍: 高优先级可以打断低优先级,但低优先级不能打断高的。 中断号不可更改,代表了中断类型,这是51单片机为了区别不同的中断专门引入的 2:外部中
[单片机]
【51单片机】<font color='red'>外部中断</font>
51单片机学习笔记5 -- 外部中断
1.外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 2.引脚功能复用 51单片机芯片内部有很多外设,这些外设的引脚都是与IO口复用的。也就是说,一个IO口如果可以复用为内置外设的功能引脚,那么当这个IO口作为内部外设使用的时候,就叫做复用(一般来说,当某个引脚作为复用功能使用时,它将不能作为其他复用功能和普通IO来使用,即单个引脚只能作为普通IO或单个复用功能来使用)。 51单片机也有引脚具备复用功能,如下图P3端口的引脚可复用成串口收发或外部中断 3.中
[单片机]
51单片机学习笔记5 -- <font color='red'>外部中断</font>
补充:51单片机学习之外部中断
前天,学到中断,也中断了。昨天也没学。今天,开始试中断查询方式,竟然不对,从网上找资料,还是不对,和定时器中断一样,感觉不应该有啥问题,就是不对。 不知突然看到,我的while(1)后写个分号,编译竟然能通过。我后头可是大括号,还有东西呢啊!果然,分号一去,OK了。坑姐啊! void Main() { EA=1; //全局中断开 EX0=1; //外部中断0开 IT0=1; //1是边沿触发,0为低电平触发 while(1) { if(IE0) { Speak1=~Speak1; IE0=0; } } } 中断
[单片机]
stm32f407如何配置外部中断
这几天又重新学了stm32f4,遇到了一个外部配置的实验,实验内容仅作简单的外部中断,读者只要搞懂其中的原理,稍微复杂的中断就能很好解决。 实验内容:按键KEY0按下,触发外部中断,中断函数点亮LED0 现将实验笔记做一个分享。 外部中断需要如下几步(此处我们以正点原子探索者开发板为例) 1)初始化LED灯,按键的GPIO 2)配置NVIC 3)将按键 GPIO 连接到 EXTI 源输入 4)配置按键 EXTI 中断/事件线 5) 编写 EXTI 中断服务函数 正点原子KEY0对应IO口为PE4,LED0对应IO口为PF9. 1)初始化LED灯,按键的GPIO RCC_AHB1PeriphClockCmd(RCC_AHB1
[单片机]
STM32CUBEMX开发GD32F303(15)----外部中断EXTI
概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过开发板内进行验证。 使用外部中断EXTI进行驱动LED。 最近在弄ST和GD的课程,需要GD样片的可以加群申请:615061293 。 视频教学 https://www.bilibili.com/video/BV1Ld4y1i7pF/ csdn课程 课程更加详细。 https://download.csdn.net/course/detail/37152 生成例程 这里准备了自己绘制的开发板进行验证。 查看原理图,PB14为按键管脚。 LED管脚为PB7. 配置时钟树 配置时钟为64M。 中断口配置 G
[单片机]
STM32CUBEMX开发GD32F303(15)----<font color='red'>外部中断</font><font color='red'>EXTI</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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