- HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
定义结构体变量
GPIO_InitTypeDef GPIO_InitStructure; //定义一个结构体变量
使能时钟
__HAL_RCC_GPIOA_CLK_ENABLE(); //打开A端口时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); //打开B端口时钟
设置要用的是哪个引脚、引脚工作模式、上拉还是下拉、速度。
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; //复用功能推挽模式
GPIO_InitStructure.Pull = GPIO_PULLUP; //上拉
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; //最大速度10MHz
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_0; //选择引脚B0、B1
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure); //调用引脚初始化程序
配置多个管脚
GPIO_InitStructure.Pin = GPIO_PIN_7 | GPIO_PIN_6; //选择引脚A6、A7
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); //调用引脚初始化程序
设置引脚的初始化电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_SET); //写引脚
注意事项
1.上拉下拉选择一定要根据外围设备来选择。
2.推挽输出:可以输出高,低电平,连接数字器件,
开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行.
参考
https://www.cnblogs.com/feipeng8848/p/7248898.html
https://blog.csdn.net/yyw_DavidYang/article/details/89493330
https://blog.csdn.net/qq_40662854/article/details/80253929