完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、ARM Cortex-M3 的中断体系
1、定义 中断,意味着中途打断现在干的事情,要立即处理紧急的事件。 现实的例子:手机玩游戏的时候,突然来电话。在编程当中还常遇到实时接收数据的请求,都使用中断服务函数,示例如下: 多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事件线。 例如:PA0占用了EXTI0,其他PB0~PI0是不能使用的。 二、代码思路 1.8051单片机 外部中断的触发方式:低电平触发、下降沿触发 IT0=1 允许外部中断引脚申请中断请求 EX0=1 优先级的配置 中断服务函数 2.STM32 端口A硬件时钟使能 SYSCFG硬件时钟使能 配置引脚的工作模式 将引脚连接到外部中断 中断触发方式:电平触发、边沿触发 允许外部中断引脚申请中断请求 优先级的配置 中断服务函数 注: 中断服务函数是不能被调用,编写格式不能随意编写,这是它特有的存在形式。不同的硬件平台,其编写方法是不一样的。 函数接口 1.为引脚选择使用哪个中断 /** * @brief Selects the GPIO pin used as EXTI Line. * @param EXTI_PortSourceGPIOx : selects the GPIO port to be used as source for * EXTI lines where x can be (A..K) for STM32F42xxx/43xxx devices, (A..I) * for STM32F405xx/407xx and STM32F415xx/417xx devices or (A, B, C, D and H) * for STM32401xx devices. * * @param EXTI_PinSourcex: specifies the EXTI line to be configured. * This parameter can be EXTI_PinSourcex where x can be (0..15, except * for EXTI_PortSourceGPIOI x can be (0..11) for STM32F405xx/407xx * and STM32F405xx/407xx devices and for EXTI_PortSourceGPIOK x can * be (0..7) for STM32F42xxx/43xxx devices. * * @retval None */ void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex) 2.配置外部中断 /** * @brief Initializes the EXTI peripheral according to the specified * parameters in the EXTI_InitStruct. * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure * that contains the configuration information for the EXTI peripheral. * @retval None */ void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct) 3.中断优先级配置 /** * @brief Initializes the NVIC peripheral according to the specified * parameters in the NVIC_InitStruct. * @note To configure interrupts priority correctly, the NVIC_PriorityGroupConfig() * function should be called before. * @param NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure that contains * the configuration information for the specified NVIC peripheral. * @retval None */ void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) 4.获取外部中断状态 /** * @brief Checks whether the specified EXTI line is asserted or not. * @param EXTI_Line: specifies the EXTI line to check. * This parameter can be EXTI_Linex where x can be(0..22) * @retval The new state of EXTI_Line (SET or RESET)。 */ ITStatus EXTI_GetITStatus(uint32_t EXTI_Line) 5.清空外部中断标志位 /** * @brief Clears the EXTI‘s line pending bits. * @param EXTI_Line: specifies the EXTI lines to clear. * This parameter can be any combination of EXTI_Linex where x can be (0..22) * @retval None */ void EXTI_ClearITPendingBit(uint32_t EXTI_Line) 中断优先级 中断优先级的一个意义:出现多个中断同时触发,但是不能同时处理,所以先后顺序之分,要根据实际上的运行环境优先处理重要的中断。 1.概述 STM32 对中断优先级进行分组,共 5 组,组 0~4,这些分组是用于指定当前M3支持多少个抢占优先级和多少个响应优先级。同时,对每个中断设置一个抢占优先级和一个响应优先级。函数原型如下: /** * @brief Configures the priority grouping: pre-emption priority and subpriority. * @param NVIC_PriorityGroup: specifies the priority grouping bits length. * @arg NVIC_PriorityGroup_0: 0 bits for pre-emption priority //不支持抢占优先级 * 4 bits for subpriority //支持16个响应优先级 * @arg NVIC_PriorityGroup_1: 1 bits for pre-emption priority //支持2个抢占优先级 * 3 bits for subpriority //支持8个响应优先级 * @arg NVIC_PriorityGroup_2: 2 bits for pre-emption priority //支持4个抢占优先级 * 2 bits for subpriority //支持4个响应优先级 * @arg NVIC_PriorityGroup_3: 3 bits for pre-emption priority //支持8个抢占优先级 * 1 bits for subpriority //支持2个响应优先级 * @arg NVIC_PriorityGroup_4: 4 bits for pre-emption priority //支持16个抢占优先级 * 0 bits for subpriority //不支持响应优先级 * @retval None */ 2.抢占优先级与响应优先级区别 1)高抢占优先级是可以打断正在进行的低抢占优先级的中断。抢占优先级若相同,则不会出现抢占的过程。 2)抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。 3)抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。 4)抢占优先级相同且响应优先级相同的中断,假如同时发生,会按照硬件内部固定的优先级执行,如下图。表中为互联型产品的向量表、其他类型成品可查找stm32中文参考手册 5)无论是抢占优先级还是响应优先级,优先级数值越小,就代表优先级越高。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1877 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1661 浏览 1 评论
1145 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
760 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1963浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
789浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
612浏览 3评论
628浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
590浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 21:13 , Processed in 0.694635 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号