GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD优化代码
时间: 2023-09-12 22:11:19 浏览: 156
GPIO 引脚模式 打开时钟位置
5星 · 资源好评率100%
优化代码可以参考以下几点:
1. 将GPIO_InitStructure的定义放在函数内部,避免全局变量定义带来的不必要开销。
2. 将GPIO_Mode_IPD改为GPIO_Mode_Input,然后在初始化后手动设置GPIO引脚为下拉输入模式。
3. 在GPIO初始化前先判断该引脚是否已经被初始化过,如果已经初始化过,则不需要重复初始化。
下面是一个优化后的示例代码:
```c
void init_GPIO(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
static bool initialized = false;
if (initialized) return;
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Input;
GPIO_Init(GPIOx, &GPIO_InitStructure);
GPIOx->BSRR = GPIO_Pin_0 << GPIO_Pin; // 手动设置引脚为下拉输入模式
initialized = true;
}
```
以上代码中,我们利用了一个静态变量initialized来记录该引脚是否已经被初始化过,避免了重复初始化的情况。同时,我们将GPIO_Mode_IPD改为了GPIO_Mode_Input,然后在初始化后手动设置引脚为下拉输入模式,这样可以减少GPIO_InitStructure的设置,提高代码效率。
阅读全文