首页 > 其他分享 >暂时关闭EXTI外部中断的一个坑 HK32(stm32没有测试过)

暂时关闭EXTI外部中断的一个坑 HK32(stm32没有测试过)

时间:2024-11-11 14:43:32浏览次数:1  
标签:HK32 stm32 中断 关闭 EXTI 外部

一开始的外部中断是通过这个宏函数来关闭的和开启

#define  DisableEXTI_Key()  (EXTI->IMR &=~((1<<KEY1_Pin)+(1<<KEY2_Pin)+(1<<KEY3_Pin))) //PA0、PC2、3
#define  EnableEXTI_Key()   (EXTI->IMR |= ((1<<KEY1_Pin)+(1<<KEY2_Pin)+(1<<KEY3_Pin))) //PA0、PC2、3

这样会导致一个问题(在HK32芯片中,stm32芯片我就不知道咯),在IMR(Interrupt Mask Register)寄存器被清除的期间,如果有外部中断信号发生,这个状态会被保存,直到IMR被设置的同时 PR(Pend Register)寄存器也同步被设置。

我们一般在关闭外部中断的时候不希望对外部中断的状态进行保存,而这样设置会对外部中断的状态进行暂存(存在哪我也不知道),在外部中断打开的时候立刻去响应。可能不符合一些业务逻辑,在刻薄的业务下有可能导致程序的崩溃。

所以我在想能不能关闭触发方式来达到关外部中断的功能,代码如下

#define DisableEXTI_Key()   (EXTI->FTSR &=~((1<<KEY1_Pin)+(1<<KEY2_Pin)+(1<<KEY3_Pin)))  //PA0、PC2、3
#define  EnableEXTI_Key()   (EXTI->FTSR |= ((1<<KEY1_Pin)+(1<<KEY2_Pin)+(1<<KEY3_Pin)))  //PA0、PC2、3

我们的代码中只有下降沿触发,故只需要对下降沿进行开启和关闭。改完之后一跑,符合在关闭外部中断的时候不希望对外部中断的状态进行保存的逻辑。

开发中遇到的问题,特此记录。注意芯片为HK32(stm32没有测试过)。

标签:HK32,stm32,中断,关闭,EXTI,外部
From: https://www.cnblogs.com/xddisme/p/18539653

相关文章

  • STM32CubeMX:使用DAC输出正弦波的三种方法(while,定时器中断,DMA)
    1.DAC概念简介:DAC的工作原理是根据数字输入信号的数值,生成相应的模拟输出电压或电流。它通常接收一个二进制数字输入,该数字代表了一个特定的数值范围。DAC通过将这个数字值转换为模拟信号的电压或电流水平来输出。(功能与ADC相反)2.正弦波输出方式1:简单粗暴while循环输出Cub......
  • stm32 HAL 添加 FREERTOS系统(使用stm32cubemx)
    #学习笔记,留存#1.ClockConfiguration(时钟配置)​​​​​​​HSE,LSE选择外部晶振系统时钟选择TIM6,systick(滴答时钟)给FREERTOS用根据自己的芯片配置时钟(我用的是stm32f103zet6)AHB总线72MHZAPB1总线36MHZ APB2总线72MHZ2.ADDFREERTOS(添加实时系统)在Pinout&Co......
  • OpenMV与STM32之间的通信(附源码)
    在嵌入式项目中,经常需要将图像处理单元(如OpenMV)与微控制器(如STM32)相结合,以实现更复杂的功能。本文将详细介绍如何通过串口通信实现OpenMV与STM32之间的数据传输。OpenMV与STM32通信基础OpenMV是一款专为机器视觉设计的微控制器,它内置了图像传感器和强大的图像处理算法。ST......
  • STM32+TMC2209控制步进电机正反转
    TMC2209是一款由Trinamic公司生产的高性能步进电机驱动器芯片,它支持SPI通信接口,能够实现精准的步进电机控制。本文将详细介绍如何使用STM32微控制器结合TMC2209驱动器来控制步进电机的正反转。TMC2209特点高精度控制:支持步进角为0.9°、1.8°、3.6°等多种细分设置。SPI接......
  • STM32的端口引脚的复用功能及重映射功能解析
    STM32微控制器因其强大的外设功能和灵活的引脚复用能力而被广泛应用于嵌入式系统设计中。本文将详细介绍STM32的端口引脚复用功能和重映射功能,以及如何通过代码实现这些功能。端口引脚复用功能STM32的GPIO端口可以被复用为多种外设功能,如USART、SPI、I2C等。这种复用功能......
  • STM32的内存(堆和栈)
    一般来说单片机的内存指的是FLASH和RAM,当在程序中定义了全局变量、局部变量、只读变量等参数时都是会存放到对应的FLASH或者是RAM中。具体对单片机FLASH和RAM的介绍之后再写,这里只对单片机内存分配,对堆和栈以及变量的存储做一个梳理和记录。1、FLASH(0x08000000)FLASH主要是存放......
  • MAC下使用Clion软件进行STM32的HAL库的开发
    1、准备的软件(1)clion:链接:https://www.jetbrains.com.cn/clion/破解:方法可在某宝上去找。(2)STM32CubeMX与ST_Link:链接:https://www.st.com.cn/content/st_com/zh/stm32cubemx.htmlmac电脑在安装的时候会出现上面的界面,依次安装即可。(3)macOS的包管理器‌brew:打开终端......
  • 基于STM32的温室自主灌溉系统(论文+源码)
    1.总体方案设计本课题为基于STM32的温室自主灌溉系统,通过查阅多种文献和的设计了如图2.1所示的温室自主灌溉系统总体架构,整个系统在器件上包括了主控制器STM32F103,温度传感器DS18B20,土壤湿度传感器YL-69,光敏电阻,显示器LCD1602,继电器,LED灯,蜂鸣器,水泵,按键等等。在功能上,实现了......
  • stm32以太网接口:MII和RMII
    前言使用stm32和lwip进行网络通信开发时,实现结构如下:而MII和RMII就是stm32与PHY芯片之间的通信接口,类似于I2C、UART等。stm32以太网模块有专用的DMA控制器,通过AHB接口将以太网内核和存储器相连。数据发送时,先将数据从存储器以DMA传输到TXFIFO中进行缓冲,然后由MAC内核......
  • STM32基础篇:SYSTICK(系统滴答)
    systick概述Cortex-M处理器内部包含了一个简单的定时器系统嘀嗒(SysTick)。因为所有的Cortex-M芯片都带有这个定时器,软件在不同Cortex-M器件间的移植工作就得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(处理器上的STCLK信号)。不过,STCLK的具体......