1.stm32中gpio口模式 每个gpi/o端口有两个32位配置寄存器(gpiox_crl, gpiox_crh),两个32位数据寄存器(gpiox_idr和gpiox_odr),一个32位置位/复位寄存器(gpiox_bsrr),一个16位复位寄存器(gpiox_brr)和一个32位锁定寄存器(gpiox_lckr)。根据数据手册中列出的每个i/o端口的特定硬件特征, gpio端口的每个位可以由软件分别配置成多种模式。
─ 输入浮空
─ 输入上拉
─ 输入下拉
─ 模拟输入
─ 开漏输出
─ 推挽式输出
─ 推挽式复用功能
─ 开漏复用功能
每个i/o端口位可以自由编程,然而i/0端口寄存器必须按32位字被访问 (不允许半字或字节访问 )。 gpiox_bsrr和 gpiox_brr寄存器允许对任何gpio寄存器的读/更改的独立访问;这样,在读和更改访问之间产生irq时不会发生危险。
本示例主要讲解io口输入模式的应用,以按键驱动为例来实现输入模式配置方法。本次实验所用开发板有3个按键,其中一个为复位按键,另外两个则可用户自行驱动。我们采用板载的2个按键来实现对led灯开关控制。
2.硬件接口 sw2为复位按键,已直接接到芯片复位引脚上,sw3接在pb0上、sw4接在pb1上。按键按下均为低电平。
3.软件设计 1.打开stm32cubmmx代码生成软件,将pb0、pb1配置为输入模式。
2.在选定为输入模式后,stm32输入模式分为两种:浮空输入、上拉/下拉输入。
─浮空输入:配置为浮空输入模式,初始化成功后引脚电平状态处于中间态,既不为高也不为低。
─上拉/下拉输入:配置为浮空输入模式,初始化成功后引脚电平状态可以选择是高电平或者低电平。
因为按键按下为低电平,因此要想检测到按键状态变化,初始化时就得设置为与按下相反的电平,所用我们这里选择带上拉的输入模式(选择浮空输入也可,一般建议使用上拉输入模式)。
4.生成配置代码 使用stm32cubemx生成代码时,所有的gpio初始化均会放gpio.c中。
在当前工程的core目录下新建system文件夹保存用户自定义驱动文件。
2.创建一个key.c和key.h文件,在system目录中创建一个key文件夹保存该文件
3.添加头文件路径,编写key.h文件
4.编写key.c文件,编写按键检测函数
u8 key_getval(void){ u8 static stat=0; if((!key1 || !key2) && !stat) { stat=1; hal_delay(30); if(!key1)return 1; else if(!key2)return 2; else return 0; } else { if(key1 && key2)stat=0; } return 0;} 5.实现按键控制led开关
35KV电缆分接箱一进二出
更强创造力,更少等待! NVIDIA RTX GPU 为创意应用提供支持
STM32探索者V3开发板项目实战开发
如何使用Raspberry Pi创建Wi-Fi热点
1N系列稳压二极管参数大全
以按键驱动为例来实现输入模式配置方法
华为全栈全场景的AI解决方案出台,引领安防新未来
linux下Redis常用命令使用
PM2.5传感器在智能化环境监测设备上的应用
卫丁:AR/VR技术将成为改变生活的重要应用
NXP超低功耗微控制器应用于联想最新款VIBE X2 Pro智能手机
工信部:隔离场所72 小时实现通信网络全覆盖
OPPO发布了Reno Z手机采用水滴屏设计搭载了联发科P90芯片
射频集成电路测试
Marvell杀入LED照明:深度调光技术的全面突破
Maxim推出DS28E18 1-Wire®至I2C/SPI桥接芯片 构建远端连接的I2C和SPI传感器网络
常见的网络传输介质
无碱金属的酸性电解液中CO2还原研究
40GE/OTU3 QSFP ER4 40km光模块特征及应用
如何通过幂律法则对比特币的价格进行建模