
项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。本项目需要实现的功能就是利用CubMX配置外部中断,由外部按键触发外部中断,控制LED灯的状态改变,并在Proteus上仿真验证。 硬件模块 STM32F103R4 LED灯 开关Button等 软件工具 CubMX Proteus KEIL 电路连接图 ![]() 工作流程 首先,创建好CubMX工程,PA1作为LED灯输出端,PA2作为外部中断触发端。 ![]() 设置好相应的GPIO参数。 ![]() 使能外部中断 ![]() 其余按照自己的习惯,也可以默认 ![]() ![]() 最后生成代码即可。 ![]() 左边stm32f1xx_it.c中有系统中断的相关函数,在main.c中只是对外部中断的引脚进行设置并使能。需要在stm32f1xx_it.c中查找使用相应的函数才能实现需要的功能。 ![]() 首先在stm32f1xx_it.c中找到EXTI2_IRQHandler(void)函数, ![]() 再进入HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2)中断服务函数,里面主要有两个函数,一个复位__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin),另一个是回调函数HAL_GPIO_EXTI_Callback。 ![]() 我们需要把自己想要的功能写到回调函数中HAL_GPIO_EXTI_Callback并添加到main.c文件中即可。 ![]() 接下来,我们需要创建一个Proteus工程,用来验证功能。 ![]() 开始验证。默认情况下LED端是高电平,即灯是灭的。 ![]() 按下按键后,灯亮了。 ![]() 再按又灭,继续按又亮,以此往复,功能成功实现。 程序代码 main.c
作者:jxjajl |
【有奖体验】STM32Cube通过Clang/LLVM支持进一步简化代码开发
STM32CubeMX应用结构选择指南
经验分享 | STM32CubeMX 生成时钟获取函数的分析
兔哥的最强U5图显【000】——U5G9最小系统绘制
兔哥的ST67——【000】ST67模组订购
基于LORA的环境感知系统
经验分享 | 使用CubeMx配置NVIC时为何不见子优先级?
经验分享 | 三个 ADC 同步模式配置以及 CubeMx 错误配置的解决方法
兔哥的边缘AI【001】——DIY-STM32N6全IO扩展板
兔哥的BLE【002】-WB09最小系统板PCB设计