STM32F4外部GPIO中断源使用笔记

发布者:清新家园最新更新时间:2021-02-22 来源: eefocus关键字:STM32F4  外部GPIO  中断源 手机看文章 扫描二维码
随时随地手机看文章

STM32F4有7个外部GPIO中断源,它们负责分配给每个组的GPIO[15..0];

对应关系为

外部中断初始化顺序为:


GPIO_InitTypeDef GPIO_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

 

(RCC->AHB1ENR) |= RCC_AHB1ENR_GPIOEEN;//GPIO CLK ENABLE

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟

 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;

  GPIO_InitStructure.GPIO_Speed = GPIO_Fast_Speed;

  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;

  GPIO_Init(GPIOE, &GPIO_InitStructure);

 

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource4);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource5);

 

EXTI_InitStructure.EXTI_Line = EXTI_Line4 | EXTI_Line5;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

 

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x01;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

 

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);


使能SYSCFG时钟及IO口时钟

初始化IO口为输入

设置IO口与中断线的映射关系

初始化线上中断,设置触发条件

配置中断分组(NVIC)并使能中断

编写中断服务函数(清除中断标志位)


运行结果:


关键字:STM32F4  外部GPIO  中断源 引用地址:STM32F4外部GPIO中断源使用笔记

上一篇:STM32f4 GPIO的基础使用-流水灯
下一篇:STM32F429之GPIO使用

推荐阅读最新更新时间:2024-11-05 11:47

STM32F407玩控制—神经网络PID控制
在玩51单片机时就想玩神经网络PID控制,但51单片机的数据存储器地址空间很小,就普通的应用,要增加一个变量尚且“抖抖哗哗”,更遑论玩神经网络PID控制,那可需要非常多的变量,而玩STM32F407就不存在这方面问题了。转入正题,大部分书上的神经网络PID控制,讲的是BP神经网络PID控制,举的例子都是非线性系统,通常仿真效果都不错,但BP神经网络PID控制有一个限制,就是kp、ki、kd小于1,这就限制了它的应用范围,如果kp、ki、kd 1,那就得改进,而刘金琨的《先进PID控制 MATLAB仿真》一书中讲了一种RBF神经网络PID控制,它突破了前者的限制,其原理如图1所示,图中RBF NN1神经网络根据偏差e、Jacobia
[单片机]
用<font color='red'>STM32F4</font>07玩控制—神经网络PID控制
STM32F4的HAL库开启串口空闲中断
串口接收数据时,开启空闲中断后可在接收完成触发中断,再去做进一步处理,但找了半天没找掉HAL库的使能某中断的函数,以及判断是哪个中断触发的函数,原来在stm32f4xx_hal_uart.h中有相关宏定义。 使能中断的宏定义 __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) 判断是触发哪个中断的宏定义 __HAL_UART_GET_FLAG(__HANDLE__, __IT__) 清除IDLE的中断标志位的宏定义 __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) 我是要开启所有串口的空闲中断,所以在stm32f4xx_hal_uart.c中的H
[单片机]
STM32F407 Hal库 串口使用指南
首先,当然是在Cube中进行相应的配置,这个就不多讲了。 之后,在生成的工程中,找到main函数,在/* USER CODE BEGIN 2 */下加入 HAL_UART_Receive_IT(&huart1,Uart1_Data_buffer,n); 这是要给接收到的数据定向,存在Uart_Data_buffer 中。上面函数的第三个参数应该是收到n个字节就触发中断。 然后,在stm32f4xx_it.c的最后面,也就是/* USER CODE BEGIN 1 */下编写 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { 。。。
[单片机]
stm32F4XX之窗口看门狗 HAL库
首先讲一下独立看门狗和窗口看门狗之间的区别。 独立看门狗Iwdg——独立于系统之外,因为有独立时钟,一般是外部低速时钟。主要用于监视硬件错误。 窗口看门狗wwdg——系统内部的故障探测器,采用内部RCC时钟,时钟与系统相同。如果系统时钟不走了,这个狗也就失去作用了。主要用于监视软件错误 1)独立看门狗没有中断,窗口看门狗有中断 2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制 3)独立看门狗只有下限,窗口看门狗又下限和上限 4)独立看门狗是12位递减的。窗口看门狗是7位递减的 5)独立看门狗是用的内部的大约40KHZ RC振荡器(不受系统时钟限制,即使系统时钟坏了也能工作),窗口看门狗是用的系统时钟
[单片机]
<font color='red'>stm32F4</font>XX之窗口看门狗 HAL库
基于Atmega8的实用车载空调控制器电路
  随着社会经济的发展和人们生活水平的提高,外出旅行正逐渐成为一种时尚。汽车作为一种便捷的交通工具已是人们的首选,舒适的乘车环境,如适宜的车内温度、清新的空气应是长途汽车的必备条件。所以,开发一款经济实用的车载空调控制器就成为一种需求。本文采用DC/DC转换芯片MC34063AP1为系统供电,以微控制器Atmega8为系统核心,辅以简单模糊控制技术以及按键选择、LED数码管显示,并使整个控制系统具有电源欠压、过压,温度传感器短路、断路等保护功能。    主要功能指标   汽车空调控制系统的主要功能如下。   ● 多种工作模式:自动、制冷、化霜、通风。   ● 多档风速设定:自动风、低速风、中速风、高速风。   ● 具有故
[工业控制]
基于Atmega8的实用车载空调控制器电路
STM32F4高级定时器产生六路互补PWM波
一、使用高级定时器TIM8; 二、使用引脚:CH1-PC6, CH1N-PA5, CH2-PC7, CH2N-PB0,CH3-PC8,CH3N-PB1; 三、使用的寄存器:TIMx_CCMRx:选择PWM模式 TIMx_ARR:PWM的周期 TIMx_CCRx:PWM占空比 四、结构体:GPIO_InitTypeDef :GPIO口复用 GPIO_Init(); TIM_TimeBaseInitTypeDef :基本定时结构 TIM_TimeBaseInit();
[单片机]
基于STM32F4单片机对步进电机的控制
步进电机简介 步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机。在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲频率成正比。步进电机每接收一个电脉冲,转子就转过一个相应的角度(步距角)。**改变通电顺序可改变步进电动机的旋转方向;改变通电频率可改变步进电动机的转速。**因此,通过控制输入电脉冲的数目、频率及电动机绕组的通电顺序就可以获得所需要的转角、转速及转向,利用单片机就可以很容易实现步进电机的开环数字控制。 传统的步进电机控制方法是由触发器产生控制脉冲来进行控制的,但此种控制方法工作方式单一而且难于实现人机交互,当步进电机的参数发生变化时,
[单片机]
基于<font color='red'>STM32F4</font>单片机对步进电机的控制
FreeRTOS在STM32F4上移植
一、移植 1. 准备工程文件 MCU用的是STM32F429的CORE,用keli创建一个基础工程 在工程中创建一个名为FreeRTOS的文件夹 2.文件中添加源码 把FreeRTOS的源码复制到FreeRTOS文件夹里 portable文件夹中只保留 keli,MemMang,RVDS三个文件夹即可 3.工程分组中添加文件 在工程文件中新建分组FreeRTOS_CORE与FreeRTOS_PORTABLE 把相关内核.c文件添加进分组FreeRTOS_CORE 把RVDS文件夹下的ARM_CM4F中的port.c和MemMang文件夹里的heap_4.c添加进分组FreeRTOS_PORTA
[单片机]
FreeRTOS在<font color='red'>STM32F4</font>上移植
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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