蓝桥杯G4整理——key

这篇博客详细介绍了蓝桥杯G4比赛中按键检测的原理,包括按键通过10K上拉电阻连接,未按下时IO电平为高,按下时为低。博主讲解了如何构建底层架构,并提供了使用HAL_GPIO_ReadPin函数判断按键状态的程序实现,以及宏定义简化操作的方法。

原理简述:

每个按键都接了一个 10K 的上拉电阻,当按键没有按下时,IO 上的电平为高;当按键按下时,IO 上的电平为低。因此,在使用循环检测时为检测低电平,在中断时,检测的是下降沿。

 构建底层架构:

 

 程序实现:

 使用if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)即可判断按键是否按下。为了操作便捷,可以使用宏定义(#define)的方式将

HAL_GPIO_ReadPin(GPIOx, GPIO_PIN_x)定义为 Kx 的方式。

#define k1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)
#define k2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)
#define k3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)
### 配置CubeMX与Keil进行蓝桥杯竞赛项目开发 #### STM32CubeMX的配置 STM32CubeMX是一个图形化配置工具,主要用于生成基于HAL库的初始化代码。对于蓝桥杯G4系列微控制器而言,在启动一个新的项目之前,需先下载并安装STM32CubeMX软件[^2]。 在打开该程序后,选择目标MCU型号(如STM32G474RE)。接着设置系统的时钟树结构、外设功能以及GPIO引脚分配等参数。完成这些基本设定之后,通过点击“Project”菜单下的选项保存工程项目,并指定要导出至KEIL UVision编译器中的路径位置[^1]。 #### Keil MDK的配置 当从STM32CubeMX成功导出了针对特定硬件平台定制化的C语言模板文件夹后,就可以将其导入到Keil uVision环境中继续下一步工作了。确保已预先安裝好最新版本的支持ARM Cortex-M架构处理器家族特性的MDK Professional Edition IDE及其配套组件[^3]。 为了使两者之间能够无缝衔接协作起来,建议按照如下操作指南来进行具体调整: - **加载工程**: 打开Keil uVision界面,选取刚才由CubeMX所创建出来的`.uvprojx`格式的项目文档; - **检查链接脚本**: 核实Linker Script里定义好的内存布局是否匹配实际使用的单片机规格说明书中描述的情况;若有差异,则应依据官方数据手册作出相应修改; - **优化编译选项**: 调整Compiler Settings里的Optimization Level以平衡执行效率和代码尺寸之间的关系,通常情况下Release模式下可适当提高级别以便获得更紧凑高效的二进制映像; - **添加额外依赖项**: 如果涉及到第三方类库或框架的话,记得把它们加入Include Paths及Library Files列表之中去。 最后值得注意的是,在正式参赛前务必反复测试验证整个流程直至完全熟练掌握为止,这样可以在实战当中节省宝贵的时间成本的同时也提高了成功率。 ```cpp // 示例:简单的LED闪烁程序片段 #include "stm32g4xx_hal.h" int main(void){ HAL_Init(); MX_GPIO_Init(); // 初始化GPIO while (1){ HAL_Delay(500); HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 切换PA5端口电平状态实现LED亮灭交替变化效果 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值