硬汉嵌入式论坛

 找回密码
 立即注册
查看: 638|回复: 2
收起左侧

[GPIO] 复用端口初始化顺序问题

[复制链接]

9

主题

16

回帖

43

积分

新手上路

积分
43
发表于 2022-6-7 13:51:31 | 显示全部楼层 |阅读模式
UART输出、PWM输出 这样的复用口初始化一般需要两个步骤:
1. GPIO口配置为对应的复用功能
2. 外设本身的初始化

通常看到的顺序都是如上所述。
如果倒过来,先配置外设、再配置GPIO,会有什么问题吗?哪种顺序更好?

回复

使用道具 举报

19

主题

62

回帖

119

积分

初级会员

积分
119
发表于 2022-6-7 18:53:55 | 显示全部楼层
先初始化gpio,在初始化外设,反过来可能会由于外设已经启动导致功能无法实现,或者硬件冲突
回复

使用道具 举报

9

主题

16

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2022-6-9 11:25:08 | 显示全部楼层
mojinpan 发表于 2022-6-7 18:53
先初始化gpio,在初始化外设,反过来可能会由于外设已经启动导致功能无法实现,或者硬件冲突

我举个更详细点的例子,比如需求是某端口输出PWM占空比50%
1. 如果先初始化GPIO
    1.1 初始化之前端口是默认的高阻态    1.2 初始化GPIO为复用端口,端口变成了低电平,0%
    1.3 再初始化定时器为PWM输出50%

2. 如果先初始化外设

    2.1 初始化之前端口是默认的高阻态
    2.2 初始化定时器为PWM输出50%。由于GPIO还未初始化,PWM只存在内部,外部端口仍然是高阻态
    2.3 初始化GPIO为复用端口,开始输出高低电平

方案1是不是会有一段时间输出低电平?
如果PWM改成UART,空闲时应该为高电平,方案1是不是会有一段时间高电平,导致输出一个 0xFF ?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 19:26 , Processed in 0.215769 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表