【STM32Cube HAL】外部中断(三)

 实验内容:通过按键触发外部中断,LED灯电平翻转。

一、原理图

 二、 CubeMX配置

Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。

 Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。

  

Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)

 

Step4.  通过搜索框添加我们需要使用的IO口进行简单的配置。然后根据以下步骤到相应栏中进行具体信息配置,主要配置按键引脚PA0为外部中断,上升沿触发,既不上拉也不下拉;PB0为推挽输出,既不上拉也不下拉,低速,默认输出高电平。同时使能外部中断源。

 

 到这里关于相关配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。

三、添加功能代码

在main.c写入中断回调函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin==GPIO_PIN_0)//同时多个外部中断时用于区分
	{
		HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);//输出电平翻转函数
	}
}

由于该实验较为简单,只需在配置完CubeMX以后写一个回调函数,就可以实现我们需要的功能。该实验旨在让我们了解配置外部中断的过程。

在使用中断回调函数的时候我们总能看到自带的回调函数用__weak修饰,这属于弱定义的形式。里面的注释“NOTE:…”描述是,“该函数不应被修改,如果需要回调,则可以在用户文件中实现。”也就是说,要在用户文件中重写该函数。

猜你喜欢

转载自blog.csdn.net/qq_29031103/article/details/119893897