完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
依旧是使用Clion和CubeMx开发
实现功能 以中断的方式,通过按键控制 led灯的亮灭 按一下,灯亮。再按一下,灯灭。 一 新建工程 查看原理图 按键 PA15LED灯 PA8 打开CubeMx,先使能串口线,让我们可以通过仿真器往单片机里下载程序。 找到PA15,选择为GPIO_EXTI15 中断模式 GPIO mode设置为 上升沿中断 我们的GPIO默认是3.3V高电平,当按下按键,GPIO变为低电平,此过程是下降沿。松开按键,GPIO又变为高电平,此过程为上升沿。我是设置的是上升沿中断,也就是松开按键的时候,灯会变化。 PA8 LED引脚配置,默认设为高电平,处于熄灭状态 开启中断,将优先级降低一点,设为1。数字越小优先级越高。 上面的都是一些系统的中断,为了不影响系统的运行,我们要将外设的中断优先级设置的低一些。 时钟的话,36M就够用了。 然后生成工程 代码编写 在gpio.c文件中可以找到,中断服务函数 void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) 当捕获到上升沿,触发中断,就会进入到这个函数里面, 然后就会执行HAL_GPIO_EXTI_Callback(GPIO_Pin);函数 此函数为回调函数,我们进去看看。 前面的 __weak 表示此函数为虚函数,需要用户重写的。 那就重写呗 __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ UNUSED(GPIO_Pin); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */ } 在主函数的上面随便找个空地 输入如下代码 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8); //翻转电平 /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */ } 就像下面这样 松开按键,进入回调函数,LED电平翻转一次。这样就实现了按键控制LED灯的亮灭。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1820 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1634 浏览 1 评论
1104 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
740 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
587浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
569浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 00:37 , Processed in 1.007689 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号