打印

MCU单片机GPIO初始化该按什么顺序配置?为什么初始化时有电平跳变?

[复制链接]
437|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GPIO初始化时有时钟配置、模式配置、输出配置、复用配置,那么在编写初始化代码时,到底该按什么顺序执行呢?如果顺序不当那初始化过程可能会出现短暂的电平跳变。
第一步,初始化MCU外设时,一般都需要先打开对应寄存器的接口时钟,所以GPIO时钟使能一定是第一步,否则后面执行的初始化配置无法写入到寄存器中。
第二步,
对于外设复用的GPIO,则需要先配置好GPIO的重映射或者复用选择器,让这个GPIO先内部连接到外设上;
如果我们先初始化GPIO复用模式那么可能默认的复用不是我们想要的外设功能,此时IO按默认外设的默认电平输出,接着软件又配置复用选择器连接到想要的外设,输出电平再次发生变化,就会出现这个短暂的电平变化。
对于普通输出IO,则需要先配置好输出状态。
因为寄存器里默认输出值是0,如果GPIO想要默认状态高,那初始化完GPIO后再配置IO输出高也会出现短暂的低电平导致电平变化。
第三步,
初始化GPIO模式,其中一般有输出、输入、复用、模拟等几种模式,有的芯片也可以配置内部的上下拉电阻是否开启,在输出模式时还有GPIO驱动能力配置。
当然也有特殊情况,以TIMER PWM输出为例,不同的PWM模式默认电平有高和低两种情况,和TIMER配置有关,此时我们按标准顺序配置好GPIO后再配置TIMER,则也可能出现电平变化,如果PWM用于控制功率开关,则可能对电路带来不良影响。所以对于这类外设默认电平可配的外设,想要启动外设工作前保持默认电平的话,我们就可以先初始化好外设,再按标准的顺序配置GPIO
所以GPIO虽然简单,但实际也有很多细节,想要让软硬件更加可靠,需要抓住这些细节优化软硬件设计。
这里推荐大家购买我们红枫派开发版,其中的例程和驱动程序就是考虑到细节设计的,可以方便大家二次开发产品。

本教程由GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网,GD32MCU技术交流群:859440462

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

8

粉丝