网站备案 厦门,wordpress 公司展示,建e室内设计网公众号,网站内容与功能设计与实现的1、复制03-流水灯项目#xff0c;重命名06-按键点灯#xff08;中断法#xff09; 在\Drivers\BSP目录下创建一个文件夹exti#xff0c;在该文件夹下#xff0c;创建两个文件exti.c和exti.h文件#xff0c;并且把这两个文件加载到项目中#xff0c;打开项目工程文件 加载… 1、复制03-流水灯项目重命名06-按键点灯中断法 在\Drivers\BSP目录下创建一个文件夹exti在该文件夹下创建两个文件exti.c和exti.h文件并且把这两个文件加载到项目中打开项目工程文件 加载完新建的文件之后找到exti.c文件双击打开写入代码 #include sys.h #include exti.h 编译项目编译通过找到exti.h文件双击打开写入代码 #ifndef __EXTI_H__ #define __EXTI_H__ #endif 2、代码 exti.c
#include sys.h
#include exti.h
#include delay.h
#include led.hvoid exti_init(void)
{//使能GPIO时钟GPIO_InitTypeDef gpio_initstruct;//定义一个结构体gpio_initstruct//打开时钟-使能GPIO时钟__HAL_RCC_GPIOA_CLK_ENABLE();//设置GPIO输入模式//设置AFIO(开启时钟IO口映射)//设置EXTI屏蔽上/下沿//调用GPIO初始化函数gpio_initstruct.Mode GPIO_MODE_IT_FALLING;//下降沿输出//结构体函数的四种类型引脚模式、引脚、引脚上拉下拉、引脚速度gpio_initstruct.Pin GPIO_PIN_0;//LED1对应的引脚gpio_initstruct.Pull GPIO_PULLUP;//上拉HAL_GPIO_Init(GPIOA,gpio_initstruct);//设置NVIC优先级分组设置优先级使能中断HAL_NVIC_SetPriority(EXTI0_IRQn,2,0);HAL_NVIC_EnableIRQ(EXTI0_IRQn);}
//设置中断服务函数
void EXTI0_IRQHandler(void)
{HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
}
//回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{delay_ms(20);if(GPIO_Pin GPIO_PIN_0){if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) GPIO_PIN_RESET)led1_Toggle();}
}在设置优先级分组进入函数 把这里的4改成2优先级分组只需要设置一次
exti.h
#ifndef __EXTI_H__
#define __EXTI_H__void exti_init(void);#endifmain.c
#include sys.h
#include delay.h
#include led.h
#include exti.hint main(void)
{HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init();//初始化led灯exti_init();while(1){ led2_OFF();delay_ms(500);led2_ON();delay_ms(500);}
}