要求:将连接按键的IO口配置为上拉输入,按键一端接IO口,一端接地,即当按键按下后,该IO口会产生一个下降沿,触发下降沿中断。
问题:将相应的IO口配置好后,测了引脚的的电压,并不是3.3V左右,而是0.1V左右。于是猜想:
1. 外围电路对IO口产生了影响。
2. STM32内部上拉能力较弱,一次只能上拉一个IO口。
于是开始从这两个想法着手解决。首先第一个,很容易就排除了。将外围电路撤掉,我用的是杜邦线,直接拔掉测量引脚上的电压,依然是0.1V左右,于是第1个猜想排除。
第二个,查看万能的参考手册,发现每一个IO口都是有独立的驱动电路,这样第2个也排除了。
最后各种纠结,然后发现:在主函数的开头部分初始化的时候,我把初始化的那个函数给注释掉了。低级错误,见笑了。
现在总结一下:
STM32的输入有4种输入模式:
模拟输入 GPIO_AIN
用于AD转换
浮空输入 GPIO_IN_FLOAtiNG
引脚处于浮空模式,电平状态是不确定的。外部信号输入什么,IO口就是什么状态。
上拉输入 GPIO_IPU
防止IO口出现不确定的状态,比如,当IO口悬空时,就会通过内部的上拉电阻将该点钳位在高电平。
下拉输入 GPIO_IPD
功能与上拉电阻类似,防止IO口出现不确定的状态,比如,当IO口悬空时,就会通过内部的下拉电阻将该点钳位在低电平。
STM32中空的I/O管脚是高电平还是低电平取决于具体情况。
1、IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定。
2、STM32上电复位瞬间I/O口的电平状态默认是浮空输入,因此是高阻。做到低功耗。
3、STM32的IO管脚配置口默认为浮空输入,把选择权留给用户,这是一个很大的优势:一方面浮空输入确保不会出现用户不希望的默认电平(此时电平取决于用户的外围电路);另一方面降低了功耗,因为不管是上拉还是下拉都会有电流消耗。从另一个角度来看,不管I/O管脚的默认配置如何,还是需要在输出的管脚外加上拉或下拉,这是为了保证芯片上电期间和复位时输出的管脚始终处于已知的电平。
4、在没有任何操作的情况下,STM32通用推挽输出模式的引脚默认低电平,也就是有电的状态。所以在配置的时候通常会先把引脚的电平设置拉高,让电路不产生电流。有电到没电这一过程也就是引脚电平从低到高的过程。
5、STM32的I/O管脚有两种:TTL和CMOS,所有管脚都兼容TTL和CMOS电平。也就是说从输入识别电压上看,所有管脚不管是TTL管脚还是CMOS管脚都可以识别TTL或CMOS电平。
上一篇:适合嵌入式stm32的五大操作系统解析
下一篇:一种基于STM32利用始终定时实现延迟的方法
推荐阅读最新更新时间:2024-11-18 00:47
设计资源 培训 开发板 精华推荐
- 【涂鸦智能】温湿度计-652533A
- AM2G-1203SH30Z 3.3V 2 瓦 DC-DC 转换器的典型应用,用于开/关控制应用
- DC2518A,基于 LTC2975 4 通道 PMBus 电源系统管理器的演示板,具有 ±12V 和 ±48V 电源轨
- STEVAL-ILL051V2,基于 LED2000 3A HB LED 驱动器的评估板,采用 QFN 封装,具有调光功能
- ADPA9002-EVALZ,用于评估 ADPA9002 GaAs、pHEMT、MMIC、单正电源、DC 至 10 GHz 功率放大器的评估套件
- 电桥温度测量允许软件补偿
- LTC2862AIDD-1 ±60V 20Mbps 电平转换器/隔离器的典型应用
- 基于rp2040zero的四轴3d打印机控制板
- 光电隔离接口中 AD7303 串行输入、双电压输出 8 位 DAC 的典型应用
- LT1084CT-5、5V/5A 线性稳压器和基准电压源的典型应用电路
- wince 如何使用Makefile
- STM32F103VCT6中TIM4remap后会与FSMC冲突吗?
- 【靠谱例程联盟】 20131231 malloc/free 和 堆 的问题,本质上是 (堆)内存管理
- 关于vivi 移植的问题
- 如何成为一位杰出的工程师-How to be a Star Engineer
- 动态加载驱动程序第一次成功,可卸载后,第二次加载,就会出现StartService失败,错误代码是2 ????????
- Stellaris M3 问答汇总 Ver 1.0
- 原创分享64*24点阵LED显示屏
- STR71x的定时器不是很好
- Conformity of production