打印
[应用相关]

STM32普通的GPIO输出正确的配置方式是怎样的?

[复制链接]
625|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2022-1-20 09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4G, AD, IO, ST, gp
目前通过CubeMx工具配置PA2、PA4管脚为普通IO输出,默认电平分别为高电平、低电平,其自动产生的代码如下,严格意义上来讲应该是先配置IO管脚功能(如IO输入、IO输出、模拟、功能复用),再配置普通IO输出管脚默认输出电平状态,而通过CubeMx工具配置GPIO顺序则是相反的,请问下这里是否存在设计不严谨地方?正确配置顺序是怎样的?谢谢
static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0};
/ GPIO Ports Clock Enable / HAL_RCC_GPIOC_CLK_ENABLE(); HAL_RCC_GPIOA_CLK_ENABLE();
/Configure GPIO pin Output Level / HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);
/Configure GPIO pin Output Level / HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
/Configure GPIO pin : PA2 / GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/Configure GPIO pin : PA4 / GPIO_InitStruct.Pin = GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

使用特权

评论回复
沙发
香水城| | 2022-1-20 10:46 | 只看该作者
那个写操作 放前面 放后面没所谓的。

那个写操作并不影响下面的GPIO模式配置。

使用特权

评论回复
板凳
lfc2013| | 2022-1-20 14:14 | 只看该作者
如果你先配置模式  在配置默认电平高低    中间会存在一定的IO状态不符合要求间隙。如果你程序在配完模式后 死机了,IO状态不是想要的,会存在风险

使用特权

评论回复
评论
香水城 2022-1-20 16:32 回复TA
嗯 尽管突然死机,状态就不好说。但细究起来,现有写法更佳。 
地板
full_stack| | 2022-1-21 13:01 | 只看该作者
你贴的这个代码更好,配置完模式之后,IO就是你想要的电平

使用特权

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

本版积分规则

368

主题

1967

帖子

3

粉丝