拖了好几天终于进入到中断的学习了
我们的任务目标是采用中断的方式通过411板上的按键控制LED的亮灭
中断源的设置
打开STM32CubeMx,按照之前的方法新建文件
设置中断源,查阅开发板手册发现开发板有两个按键,一个是User一个是Reset.很显然我们要用User键。

很显然USER键连接到了GPIO A0上,但是低有效还是高有效并不知道。
别急,manual一定会写的。

根据原理图,当按键被按下的时候,PA0读入高电平,也就是说PA0高有效。那么一切都简单了。

在cubeMx里将PA0设置成外部中断0

进一步对PA0进行设置,将其设置为上升沿触发,也就是我们按下按键的一瞬间执行中断服务子函数。

开启中断使能。生成MDK工程
编写中断服务子程序
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin==GPIO_PIN_0)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(1000);
}
}
/* USER CODE END 4 */
编译烧录程序,成功!
拖了好几天终于进入到中断的学习了
我们的任务目标是采用中断的方式通过411板上的按键控制LED的亮灭
中断源的设置
打开STM32CubeMx,按照之前的方法新建文件
设置中断源,查阅开发板手册发现开发板有两个按键,一个是User一个是Reset.很显然我们要用User键。

很显然USER键连接到了GPIO A0上,但是低有效还是高有效并不知道。
别急,manual一定会写的。

根据原理图,当按键被按下的时候,PA0读入高电平,也就是说PA0高有效。那么一切都简单了。

在cubeMx里将PA0设置成外部中断0

进一步对PA0进行设置,将其设置为上升沿触发,也就是我们按下按键的一瞬间执行中断服务子函数。

开启中断使能。生成MDK工程
编写中断服务子程序
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin==GPIO_PIN_0)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(1000);
}
}
/* USER CODE END 4 */
编译烧录程序,成功!
举报