库函数写一个stm32引脚反初始化的函数
时间: 2024-11-03 19:22:19 浏览: 7
STM32F103固件函数库用户手册(中文).zip_C++_stm32_stm32f103 库_中文手册_库函数
5星 · 资源好评率100%
在STM32微控制器中,为了反初始化或复位某个GPIO引脚,我们需要设置其模式为输入(如果之前是输出),清空驱动器状态,并断开上拉或下拉电阻。这里是一个简单的库函数示例,假设我们正在处理GPIOA模块:
```c
#include "stm32f1xx_hal.h"
void gpio_pin_uninitialize(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) {
// 获取GPIOB的结构体指针
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 确保GPIOx是正确的引脚组别
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
// 清除引脚配置
GPIO_InitStruct.Pin = GPIO_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 设置为输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不上拉也不下拉
// 如果该引脚之前是推挽输出,则需要先清零它的输出数据
if (GPIOx->ODR & GPIO_Pin) {
GPIOx->ODR &= ~GPIO_Pin;
}
// 初始化GPIO引脚
HAL_GPIO_Init(GPIOx, &GPIO_InitStruct);
// 断开外部中断等关联,如果有的话
EXTI_DisableIT(EXTI_LINE_GPIOx_Pin);
}
阅读全文