按键控制,硬件电路图笔记

一、下接按键(常用)

1,

        按键按下时,PA0被直接下拉到GND,此时读取PA0口的电压就是低电平。按键松开时PA0会悬空,此时引脚的电压不确定。

        这种情况下,必须要求PA0为上拉输入模式,否则会出现引脚电压不确定的错误情况。

上拉输入模式如下图:

此时开关断开,引脚悬空,PA0为高电平,

2,

        外接上拉电阻,按键断开时PA0读取电压为高电平。按键闭合时,PA0下拉接地,此时PA0读取电压为低电平。所以此时引脚可以配置为浮空输入或者上拉输入。

上拉输入:内外两个上拉电阻共同作用,此时高电平会更强,对应高电平也会更加稳定,同时,引脚被拉低是损耗也会变大。

二、上接按键

           左边在使用时需要配置为下拉输入模式,原理同上。右边需要配置为下拉输入模式或者浮空输入模式。

### GPIO上拉输入的配置与使用 #### 基本概念 GPIO(通用输入输出)是一种常见的硬件接口,允许微控制器与其他外设进行通信[^2]。在输入模式下,GPIO可以配置为浮空输入上拉输入或下拉输入。其中,上拉输入是指通过内部或外部电路将未连接信号线的状态固定到高电平。 #### 上拉输入的作用 当GPIO引脚悬空时,由于外界干扰可能导致读取值不稳定。为了防止这种情况发生,在设计中常采用上拉电阻的方式,使引脚默认保持高电平状态。这种技术广泛应用于按键检测和其他开关应用中[^1]。 #### STM32中的上拉输入配置 对于STM32系列微控制器而言,其GPIO模块支持内置上拉电阻功能。以下是具体的配置过程: 1. **初始化GPIO端口** 需要先启用对应GPIO端口的时钟。 2. **设置工作模式** 将目标引脚配置为输入模式并开启内部上拉电阻。 以下是一个基于STM32 HAL库的代码示例: ```c #include "stm32f4xx_hal.h" void GPIO_Init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 设置PA0为上拉输入模式 GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式 GPIO_InitStruct.Pull = GPIO_PULLUP; // 内部上拉 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ``` 上述代码片段展示了如何利用STM32 HAL库完成对指定GPIO引脚的上拉输入配置。 #### Rockchip平台上的上拉输入配置 针对Rockchip系列处理器(如RK3568),其GPIO行为可通过设备树文件定义。例如,某些情况下,默认状态下可能存在特定引脚始终处于低电平的现象。此时需调整设备树以确保正确的电气特性[^4]。 假设需要修改某根引脚的行为使其具备开机即启动上拉效果,则可以在`rk3568-linux.dtsi`文件内加入如下描述: ```dts &gpio { pinctrl-names = "default"; pinctrl-0 = <&gpio_default>; }; gpio_default: gpio_default { rockchip,pins = < /* 定义具体管脚编号 */ RK_PA0 (PIN_OUTPUT | PIN_PU); // 开启上拉 >; }; ``` 此部分DTS语法用于声明所选GPIO应激活内部上拉机制[^3]。 #### 注意事项 无论是在ARM Cortex-M架构还是Linux环境下运行的应用程序开发期间,请务必注意以下几点: - 确认当前使用的物理引脚并未分配给其他专用功能; - 如果涉及底层寄存器访问操作,建议查阅官方手册获取精确地址映射关系; - 对于多核SoC来说,不同CPU核心间共享资源可能会引发竞争条件问题,故而应当妥善处理同步逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值