历史上的今天
今天是:2025年03月13日(星期四)
2019年03月13日 | STM32F4开发板----外部中断(003)
2019-03-13 来源:eefocus
外部中断
1 初始化参数
/**
* @brief EXTI Init Structure definition
*/
typedef struct
{
uint32_t EXTI_Line; /*!< Specifies the EXTI lines to be enabled or disabled.
This parameter can be any combination value of @ref EXTI_Lines */
EXTIMode_TypeDef EXTI_Mode; /*!< Specifies the mode for the EXTI lines.
This parameter can be a value of @ref EXTIMode_TypeDef */
EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
This parameter can be a value of @ref EXTITrigger_TypeDef */
FunctionalState EXTI_LineCmd; /*!< Specifies the new state of the selected EXTI lines.
This parameter can be set either to ENABLE or DISABLE */
}EXTI_InitTypeDef;
外部中断库函数
/* Exported macro ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
/* Function used to set the EXTI configuration to the default reset state *****/
void EXTI_DeInit(void);
/* Initialization and Configuration functions *********************************/
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
/* Interrupts and flags management functions **********************************/
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
void EXTI_ClearFlag(uint32_t EXTI_Line);
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
2 配置过程
[..] In order to use an I/O pin as an external interrupt source, follow steps
below:
(#) Configure the I/O in input mode using GPIO_Init()
(#) Select the input source pin for the EXTI line using SYSCFG_EXTILineConfig()
(#) Select the mode(interrupt, event) and configure the trigger
selection (Rising, falling or both) using EXTI_Init()
(#) Configure NVIC IRQ channel mapped to the EXTI line using NVIC_Init()
[..]
(@) SYSCFG APB clock must be enabled to get write access to SYSCFG_EXTICRx
registers using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
其中
EXTI_GetFlagStatus()先判断中断是否使能,使能之后才去判断中断标志位
EXIT _GetFlagStatus()直接判断状态标志位
扩展,所有stm32中断处理函数入口
WWDG_IRQHandler PVD_IRQHandler
TAMP_STAMP_IRQHandler RTC_WKUP_IRQHandler
FLASH_IRQHandler RCC_IRQHandler
EXTI0_IRQHandler EXTI1_IRQHandler
EXTI2_IRQHandler EXTI3_IRQHandler
EXTI4_IRQHandler DMA1_Stream0_IRQHandler
DMA1_Stream1_IRQHandler DMA1_Stream2_IRQHandler
DMA1_Stream3_IRQHandler DMA1_Stream4_IRQHandler DMA1_Stream5_IRQHandler DMA1_Stream6_IRQHandler
ADC_IRQHandler CAN1_TX_IRQHandler
CAN1_RX0_IRQHandler CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler EXTI9_5_IRQHandler
TIM1_BRK_TIM9_IRQHandler TIM1_UP_TIM10_IRQHandler
TIM1_TRG_COM_TIM11_IRQHandler TIM1_CC_IRQHandler
TIM2_IRQHandler TIM3_IRQHandler
TIM4_IRQHandler I2C1_EV_IRQHandler
I2C1_ER_IRQHandler I2C2_EV_IRQHandler
I2C2_ER_IRQHandler SPI1_IRQHandler
SPI2_IRQHandler USART1_IRQHandler
USART2_IRQHandler USART3_IRQHandler
EXTI15_10_IRQHandler RTC_Alarm_IRQHandler
OTG_FS_WKUP_IRQHandler TIM8_BRK_TIM12_IRQHandler
TIM8_UP_TIM13_IRQHandler TIM8_TRG_COM_TIM14_IRQHandler
TIM8_CC_IRQHandler DMA1_Stream7_IRQHandler
FSMC_IRQHandler SDIO_IRQHandler
TIM5_IRQHandler SPI3_IRQHandler
UART4_IRQHandler UART5_IRQHandler
TIM6_DAC_IRQHandler TIM7_IRQHandler
DMA2_Stream0_IRQHandler DMA2_Stream1_IRQHandler
DMA2_Stream2_IRQHandler DMA2_Stream3_IRQHandler
DMA2_Stream4_IRQHandler ETH_IRQHandler
ETH_WKUP_IRQHandler CAN2_TX_IRQHandler
CAN2_RX0_IRQHandler CAN2_RX1_IRQHandler
CAN2_SCE_IRQHandler OTG_FS_IRQHandler
DMA2_Stream5_IRQHandler DMA2_Stream6_IRQHandler
DMA2_Stream7_IRQHandler USART6_IRQHandler
I2C3_EV_IRQHandler I2C3_ER_IRQHandler
OTG_HS_EP1_OUT_IRQHandler OTG_HS_EP1_IN_IRQHandler
OTG_HS_WKUP_IRQHandler OTG_HS_IRQHandler
DCMI_IRQHandler RYP_IRQHandler
HASH_RNG_IRQHandlerFPU_IRQHandler
这里中断函数对应关系
EXPORT EXTI0_IRQHandler ----> EXTI_Line0
EXPORT EXTI1_IRQHandler ----> EXTI_Line1
EXPORT EXTI2_IRQHandler ----> EXTI_Line2
EXPORT EXTI3_IRQHandler ----> EXTI_Line3
EXPORT EXTI4_IRQHandler ----> EXTI_Line 4
EXTI9_5_IRQHandler —-> EXTI_Line 5-9
EXTI15_10_IRQHandler —-> EXTI_Line 10-15z
3.3 初始化实例
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);//PA0 连接中断线0
/* 配置EXTI_Line0 */
EXTI_InitStructure.EXTI_Line = EXTI_Line0;//LINE0
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0
EXTI_Init(&EXTI_InitStructure);//配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中断0
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子通道优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
NVIC_Init(&NVIC_InitStructure);//配置
void EXTI0_IRQHandler(void)
{
delay_ms(10); //Ï消抖
if(WK_UP==1)
{
BEEP=!BEEP; //电平翻转
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志
}
史海拾趣
|
电子技术课程设计题目:秒表(要求:能精确显示0.01秒的变化;能同时对3个不同事件进行计时:比如长跑前三名) 电子技术课程设计题目:秒表(要求:能精确显示0.01秒的变化;能同时对3个不同事件进行计时:比如长跑前三名) … 查看全部问答> |
|
关于ARM中断处理的问题----《ARM嵌入式系统开发-软件设计与优化》第九章中疑问 各位过年好哦~ 呵呵,小弟这里有点疑惑相同大家讨论讨论~,这个问题是《ARM嵌入式系统开发-软件设计与优化》一书中的见下: 第九章-中断处理 9.3.2嵌套中断 在这一节中,描述了如何处理嵌套式的中断(不能单纯的在IRQ模式下打开中断允许位) ...… 查看全部问答> |
|
This file should only be compiled with iccavr or aavr with processor option -v1 #error This file should only be compiled with iccavr or aavr with processor option -v1 有人用IAR AVR遇到过这个问题吗?… 查看全部问答> |
|
家电控制板的小体积,低成本决定了在线路中不会使用高成本的材料来解决其电磁干扰问题。家电控制板的干扰主要来自三大方面:一是控制板本身产生的干扰,二是来自负载的干扰,三是来自线路上的干扰。解决这些干扰可以分别采用不同的方案来达成。 控 ...… 查看全部问答> |
|
我公司有个触摸屏是用wince英文系统的,我们电脑和触摸屏的故障信息是同步的,但是电脑改成中文故障信息后,触摸屏不能显示出中文故障,只显示乱码。 我应该怎么弄才能显示出来啊。… 查看全部问答> |
|
FPGA的I2C对摄像头配置怎么没有地址,只有数据呢。谁能解释下。///////////// Config Data LUT ////////////////////////// alwaysbegin case(LUT_INDEX) // Audio Config Data 0 : LUT_DATA <= 16\'h0000; 1 : LUT_DATA <= 16\'h1140; ...… 查看全部问答> |
|
【C2000 LaunchPad】 一、概述 C2000 LaunchPad,LAUNCHXL-F28027,是TI使用Piccolo F2802x器件制作的一个完备的低成本的实验板。F28027 LAUNCHXL平台,包括了F28027的所需要硬件及软件。 LaunchPad是基于F28027 CPU的,也可以让用户移植为成 ...… 查看全部问答> |




