Image
Image

个百zz分点个

+ 关注

粉丝 0     |     主题 52     |     回帖 678

STM32 HAL库常用GPIO函数以及外部中断配置与响应流程
2023-12-28 08:51
  • ST MCU
  • 37
  • 1984
  注意: 初始化了PB1,如果PC1再初始化中断,那么PB1的中断映射将会被清除。 ...  
  具体配置过程就设计硬件寄存器了,反正通过模式的选择在这里设置了引脚和外部中断线的映射关系。 ...  
  选择好模式后就可以在HAL_GPIO_Init();函数中对外部中断进行配置了:  
  IT就表示中断模式。 并且在stm32f1xx_hal_gpio.h中有定义:  
  配置过程: 其实将GPIO引脚和中断线相连的配置,在GPIO配置函数中就有提及: ...  
  而且虽然外部中断线有16个,但是NVIC只为EXTI提供了7个中断通道,其中EXTI0_IRQ、EXTI1_IRQ、EXTI2_IRQ、EX ...  
  当使用外部中断的时候,通过配置,我们可以将某一组中的某一个引脚连接到外部中断线上。所以一组引脚只能有 ...  
  外部中断线0-15 : 给外部中断使用的硬件外部中断线有16个,但是GPIO端口却远不止16个,所以为了解决这个 ...  
  接着执行用户编写的中断回调函数,用户需要在main.c文件中重新编写外部中断回调函数HAL_GPIO_EXTI_Callback ...  
  所以如果没用CubeMX的话,打开中断但是不再次定义中断服务函数,外部中断来临时就会卡死。 ...  
  其中由ST公司定义的中断服务函数默认为死循环,但是因为他们的函数属性都是_weak,所以在CubeMX中打开中断 ...  
  其中中断向量表是在启动文件startup_stm32f103xb.s中由ST公司定义的:  
  2.外部中断响应过程: 当外部中断引脚出现电平变化时,触发外部中断。 微控制器暂停当前程序的执行,根据 ...  
  再往下就是寄存器的操作了:(在core_cm3.h文件中)  
  在stm32f1xx_hal_cortex.c文件中可找到HAL_NVIC_SetPriority();和HAL_NVIC_EnabledIRQ();函数,但是重点关 ...  
  ......  
  其中HAL_NVIC_SetPriority();是设置中断优先级函数。 HAL_NVIC_EnabledIRQ();是中断开启函数。 外部中断 ...  
  GPIO外部中断执行流程: 1.打开外部中断: 首先是main函数中GPIO初始化函数: ...  
  其中中断服务函数最后会被stm32f1xx_it.c中的EXIT1_IRQHandler();函数调用。 然后接着调用中断回调函数。 ...  
  但是这样写的话,用户代码就不再main函数以及用户文件夹中了,可以采用以下写法: 由于该回调函数是_weak ...  
2
3
近期访客