赞
踩
// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // 复用推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);
// 初始化复用开漏输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; // 复用开漏输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);
// 初始化浮空输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 浮空输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不设置上拉或下拉
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);
// 初始化上拉输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 上拉输入模式
GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉输入
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);
// 初始化下拉输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 下拉输入模式
GPIO_InitStruct.Pull = GPIO_PULLDOWN; // 下拉输入
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);
// 初始化模拟输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; // 模拟输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不设置上拉或下拉
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);
推挽输出(Push-Pull Output):
开漏输出(Open-Drain Output):
复用推挽输出(AF Push-Pull Output):
复用开漏输出(AF Open-Drain Output):
浮空输入(Floating Input):
上拉输入(Pull-up Input):
下拉输入(Pull-down Input):
模拟输入(Analog Input):
#include "stm32xxxx.h" // 包含特定的STM32系列头文件 void GPIO\_Init(void) { GPIO_InitTypeDef gpio_init; // 定义GPIO初始化结构体 // 1. 配置引脚 gpio_init.GPIO_Pin = GPIO_Pin_x; // x为需要初始化的引脚编号 gpio_init.GPIO_Mode = GPIO_Mode_x; // x为引脚模式,如GPIO\_Mode\_IN、GPIO\_Mode\_OUT等 gpio_init.GPIO_Speed = GPIO_Speed_x; // x为引脚速度,如GPIO\_Speed\_2MHz、GPIO\_Speed\_50MHz等 gpio_init.GPIO_OType = GPIO_OType_x; // x为输出模式,如GPIO\_OType\_PP(推挽输出)、GPIO\_OType\_OD(开漏输出)等 gpio_init.GPIO_PuPd = GPIO_PuPd_x; // x为上下拉配置,如GPIO\_PuPd\_NOPULL(无上下拉)、GPIO\_PuPd\_UP(上拉)等 GPIO\_Init(GPIOx, &gpio_init); // GPIOx为对应的GPIO端口,如GPIOA、GPIOB等 // 将上面代码中的 GPIO\_Pin\_x 替换为你要初始化和配置的具体引脚编号 // 将 GPIO\_Mode\_x 替换为你需要的引脚模式 // 将 GPIO\_Speed\_x 替换为你需要的引脚速度 // 将 GPIO\_OType\_x 替换为你需要的输出模式 // 将 GPIO\_PuPd\_x 替换为你需要的上下拉配置 // 2. 配置引脚复用功能(如果需要) GPIO\_PinAFConfig(GPIOx, GPIO_PinSource_x, GPIO_AF_x); // GPIOx 替换为对应的GPIO端口,GPIO\_PinSource\_x 替换为需要配置复用功能的引脚编号,GPIO\_AF\_x 替换为复用功能选择 // 其他操作,如设置引脚输出、读取引脚输入状态、配置中断等 } int main(void) { // 初始化MCU和其他外设 // 初始化GPIO引脚 GPIO\_Init(); // 其他代码逻辑 while (1) { // 主循环代码 } }
请替换代码中的以下部分:
stm32xxxx.h
:使用适用于你的STM32系列的具体头文件,例如 stm32f4xx.h
。GPIO_Init()
函数中的 GPIO_Pin_x
:将其替换为你要初始化和配置的特定引脚编号。GPIO_Mode_x
:将其替换为你需要的引脚模式,例如 GPIO_Mode_IN
、 GPIO_Mode_OUT
等。GPIO_Speed_x
:将其替换为你需要的引脚速度,例如 GPIO_Speed_2MHz
、 GPIO_Speed_50MHz
等。GPIO_OType_x
:将其替换为你需要的输出模式,例如 GPIO_OType_PP
(推挽输出)或 GPIO_OType_OD
(开漏输出)。GPIO_PuPd_x
:将其替换为你需要的上下拉配置,例如 GPIO_PuPd_NOPULL
(无上下拉)或 GPIO_PuPd_UP
(上拉)。GPIOx
和 GPIO_PinSource_x
:将其替换为你需要的具体GPIO端口和引脚编号。GPIO_AF_x
:将其替换为你需要的复用功能选择,例如 GPIO_AF_USART1
(USART1复用功能)、 GPIO_AF_SPI2
(SPI2复用功能)等。自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)
资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!
式)**
资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。