javaee论坛

普通会员

225648

帖子

324

回复

338

积分

楼主
发表于 2019-11-04 06:22:46 | 查看: 710 | 回复: 1

首先贴出工程点此下载工程我用的外部中断引脚是PA9,LED引脚是PC13,芯片是stm32c8t6。

工程配置

我这里直接上图得了首先是一些系统设置

然后配置引脚

最后生成代码,我就不说了,注意不要有中文字符做文件夹就行。

处理代码了

如果配置没有问题,可以找到中断函数

可以看到

voidEXTI9_5_IRQHandler(void){/*USERCODEBEGINEXTI9_5_IRQn0*//*USERCODEENDEXTI9_5_IRQn0*/HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);/*USERCODEBEGINEXTI9_5_IRQn1*//*USERCODEENDEXTI9_5_IRQn1*/}

进入HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);

voidHAL_GPIO_EXTI_IRQHandler(uint16_tGPIO_Pin){/*EXTIlineinterruptdetected*/if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin)!=0x00u){__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);HAL_GPIO_EXTI_Callback(GPIO_Pin);}}

那么问题就简单了,我们只需要把中断的任务放在回调函数HAL_GPIO_EXTI_Callback(GPIO_Pin);里就够了,在下面实际上可以看到定义了一个弱函数回调函数,这表明如果我们需要回调函数就得重新定义这个函数。我是这么写的

voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){if(GPIO_Pin==GPIO_PIN_9){HAL_Delay(5);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==GPIO_PIN_RESET){HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);}}}

注意中间有一个消抖操作,按键一定要消抖!!!

即每进入一次回调函数(即中断),LED灯的状态就会翻转。OK了,大功告成。


普通会员

0

帖子

280

回复

295

积分
沙发
发表于 2019-12-21 22:18:09

不错

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017