STM32 - HAL笔记(二):EXTI中断

基础知识

概述
  • ARM Cortex M3内核支持256个中断,包括16个内核中断240个外设中断,拥有256个中断优先级别
  • STM32的中断通道可能会由多个中断源共用,因此在中断服务函数入口处需要判断中断源
  • STM32中有两个中断优先级概念,抢占优先级响应优先级,每个中断都应指定这两个优先级

外部中断
  • 16个外部中断源EXTI0 ~ EXTI15,对应7个中断向量,即7个中断服务函数

    • EXTI0、EXTI1、EXTI2、EXTI3、EXTI4:专用
    • EXTI5 ~ EXTI9:共用
    • EXTI10 ~ EXTI15:共用
  • 触发条件

    • 上升沿触发
    • 下降沿触发
    • 双边沿触发
__weak
  • STM32中的关键字,可用于修饰变量或函数
  • 当一个函数前面加上__weak这样的修饰符以后,允许用户在其它文件中定义一个和__weak修饰过的一模一样的函数,最终当编译器编译的时候,会选择用户定义的函数,如果用户没有重新实现这个函数,则编译器就会去执行带__weak修饰的函数
  • 详细内容

API

/*
 * @Descript	中断回调函数
 * @param		GPIO_Pin		引起中断的引脚	
 * @return		void
*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

Demo

  1. 在STM32Cube中设置相关管脚

在这里插入图片描述

  1. 选择触发方式、上/下拉

在这里插入图片描述

  1. 点击NVIC使能中断

在这里插入图片描述

  1. main函数中复写HAL_GPIO_EXTI_Callback函数

    //main.c
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
        switch(GPIO_Pin){
            case GPIO_PIN_x:
                //what you want to do
                break;
            //...    
        } 
    }
    

版权声明:本文为Cegan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。