也是一个半生不熟的东西,进行了简单的中断处理。
软件环境:MDK470a
硬件环境:STM32F4-Discovery。按键B1连接在F4芯片的PA0引脚。当按键按下时,引脚电平被拉底。
功能描述:按压按键B1时,触发外部中断。进入中断处理函数后,通过串口发送消息。
实现步骤:
1、打开PA时钟,设置PA0引脚为输入。
void EXTI_GPIO_Congig(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_PinSource0;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
2、打开系统配置控制器(System configuration controller)时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
关于系统控制寄存器(SYSCFG)的功能,是F4系列新增的。功能如下:
The system configuration controller is mainly used to remap the memory accessible in the code area, select the Ethernet PHY interface and manage the external interrupt line
connection to the GPIOs.
SYSCFG主要用于映射访问CODE区域的内存、选择以太网的什么接口,管理外部中断线到GPIO的连接。
设置外部中断,还要设置SYSCFG的外部中断配置寄存器。
3、配置外部中断EXTI的工作方式.
映射到PA0,即线0,使用中断模式下降沿触发。
设置EXTI寄存器的工作方式交给了库函数。
void EXTI_Config(void)
{
EXTI_GPIO_Congig();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure);
}
4、编写中断处理函数,实现向串口打印信息。
固定的函数名:void EXTI0_IRQHandler(void)。
进入中断处理函数后,首先检查是否为线0的中断。如果是,则清除这个中断标志。之后就可以发送消息了。
消息发送完成之后,清除在处理外部中断期间到来的外部中断。使用EXTI_ClearITPendingBit()完成
void EXTI0_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line0))
{
EXTI_ClearFlag(EXTI_Line0);
printf("i am in exti irqhandler\r\n");
printf("and the extiflag is cleared\r\n");
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
关键字:STM32F4 外部中断 EXTI
引用地址:
STM32F4 外部中断EXTI
推荐阅读最新更新时间:2024-03-16 15:26
STM32学习之路-外部中断(1)
所有的GPIO口都有外部中断的能力,为了使用外部中断线,端口必须设置成输入模式. 输入模式有三种:上拉、下拉、浮空 请看图: 上拉输入模式:区别在于没有输入信号的时候默认输入高电平 下拉输入模式:区别在于没有输入信号的时候默认输入低电平 对于浮空输入模式顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号 例子: (板子:奋斗V5) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉 GPIO_Init(GPIOC, &GPIO_InitSt
[单片机]
用STM32F407玩控制—自适应模糊PID控制
自适应模糊PID控制的原理如图1所示,从图中可以看出对偏差和偏差变化率进行模糊推理,获得Δkp、Δki、Δkd,模糊控制器的PID参数实际值为:kp=kp0+qp*Δkp、ki=ki0+qi*Δki、kd=kd0+qd*Δkd,其中qp、qi、qd为比例因子,这是比较常见的一种计算方式,但在薛定宇的《控制数学问题的MATLAB求解》一书中讲了另外一种计算方式:kp(k)=kp(k-1)+γ(k)*Δkp、ki(k)=ki(k-1))+γ(k)*Δki、kd(k)=kd(k-1)+γ(k)*Δkd,显然这种计算方式更复杂,我们这里采用前者,为了进行模糊推理,需要确定模糊规则表和各个模糊变量的隶属度函数,常见的模糊规则表如图2所示,我
[单片机]
用AT91 RM9200构建高可靠嵌入式系统
摘要 提出一种基于AT91RM9200处理器的高可靠双机温备解决方案。利用EPlC6、MAX6374设计两个冗余的外部Watchdog监控处理器系统的工作状态,利用AT91RM9200自带的Watchdog作为内部监测机制监控处理器本身的故障;设计并给出了以AT91RM9200为核心的监控机制的具体实现,包括心跳信号的发送和中断服务程序的设计。 本文设计了一种以AT91RM9200处理器为核心的高可靠嵌入式系统。系统具有两台机组,当一台机组发生故障后,另一台机组接管工作并继续运行。系统提供外部和内部Watchdog(看门狗)监控机制构成一级冗余、两级监控的可靠性设计方案。其中外部Watchdog分别采用MAX6374和
[嵌入式]
51单片机外部中断触发方式
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中
[单片机]
第9章 STM32F429重要知识点数据类型,变量和堆栈
9.1 初学者重要提示 1、如果对C语言不熟练的话,可以阅读C语言书:C Primer Plus(第五版)中文版.pdf 论坛下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=91219。 2、为了更好的学习本章知识点,可以看之前做的视频教程第10章,针对H7也将在今年发布视频教程: http://www.armbbs.cn/forum.php?mod=viewthread&tid=15408 。 9.2 数据类型 了解数据类型之前要对ANSI C和ISO C的发展史有个了解,特别是C89,C99和C11的由来。 9.2.1 ANSI C和ISO C历史
[单片机]
ARM7与FPGA相结合的应用
ARM7与FPGA相结合在工业控制和故障检测中的应用 工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。 各部分功能简介 图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控
[嵌入式]
stm32f4启动代码分析(一)
因为使用的开发板是stm32f407discovery,所以启动代码为st公司的官方库文件里的startup_stm32f40_41xxx.s,至于如何去找官方库文件,不在本节讨论的范围内,本节只是初步的分析startup_stm32f40_41xxx.s,其中更深入的东西需要在以后的章节中分析。 在startup_stm32f40_41xxx.s中,有一段注释: ;* File Name : startup_stm32f40_41xxx.s ;* Author : MCD Application Team ;* @version : V1.7.0 ;* @date : 22-April-2016 ;* Description
[单片机]
DM642和CPLD外部中断的寄存器式键盘设计
摘要:介绍了一种采用DM642和CPLD相配合的扩展键盘方法。CPLD管理键盘电路中的芯片逻辑,DM642的外部中断监控按键的状态。简单阐述了键盘的分类,给出系统的硬件电路原理图,在CCS软件中调试程序方法。仿真结果表明,设计可行,达到了预期效果。 关键词:键盘;DM642;CPLD;人机交互 引言 键盘是人机交互模块中必备的输入部分,在目前的嵌入式系统人机接口中通常采用专用的键盘处理芯片ZLG7290设计键盘。由于ZLG7290是一种64位LED显示和64个按键的键盘管理器件,会造成部分LED显示和按键空闲浪费并占用硬件资源比较多,使成本增加。随着DM642性价比的提高,它在图像处理系统和数字媒体系统中的应用越来越广泛,
[嵌入式]