【STM32CubeMX】F103&外部中断

前言

  本文记录下我学习STM32CubeMX时的流程,方便以后回忆。系统板是基于STM32F103C6T6。本章记录外部中断。

步骤

该实验步骤以,配置PA1为外部中断下降沿触发事件,在触发事件后点亮板载PC13LED灯

  1. 时钟配置和生成文件配置之类的,其它文章讲过了,这里就不重复了。

  2. 引脚配置(PC13点灯引脚配置忽略,讲过了):

    【STM32CubeMX】F103&外部中断_第1张图片

    在GPIO模式中一共有六个选择,大体分为中断模式和事件模式,和各三种检测模式,上升沿,下降沿,边沿检测。

    【STM32CubeMX】F103&外部中断_第2张图片

    配置完成后,直接生成Keil工程文件。

  3. 记得,所有有关中断事件的,都要使能相关的NVIC。引脚的外部中断也不例外。
    【STM32CubeMX】F103&外部中断_第3张图片

  4. keil中打开,生成的工程。

    重写回调函数HAL_GPIO_EXTI_Callback,和在回调函数中判断触发中断的路线,因为外部中断都是共用一个中断事件的回调的。

    //重写回调函数
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    {
        //判断触发中断的路线
    	if(GPIO_Pin & GPIO_PIN_1)
    	{
            //点灯事件(PC13->LED)
    		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
    	}
        //假如存在线路2,因为是都是共用一个回调的,所以要在里面判断。
        //if(GPIO_Pin & GPIO_PIN_1)
    	//{
        //  //事件区
    	//}
    }
    

    【STM32CubeMX】F103&外部中断_第4张图片

    stm32f1xx_hal_gpio.h文件的234行中,有I/O操作函数和外部中断的回调事件的声明。想要详细了解,可以去看。

    /* IO operation functions *****************************************************/
    GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
    void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
    

你可能感兴趣的:(STM32CubeMX,stm32,单片机,嵌入式硬件,mcu)