STM32 GPIO 初始化配置详解:代码步骤逐一解析
- 定义一个GPIO_InitTypeDef类型的结构体变量GPIO_InitStructure,用于配置GPIO端口的参数。
GPIO_InitTypeDef GPIO_InitStructure;
- 使能GPIOC、GPIOB和AFIO的时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE); //ʹÄÜPORTB,CʱÖÓºÍAFIOʱÖÓ
- 配置GPIO引脚复用功能,禁用SWD,使JTAG功能得以正常使用。
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//¿ªÆôSWD£¬Ê§ÄÜJTAG
- 配置GPIOC的引脚10、9、8、7、6为推挽输出模式,最大输出速率为50MHz。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6; ///PORTC6~10¸´ÓÃÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- 初始化GPIOC的配置参数。
GPIO_Init(GPIOC, &GPIO_InitStructure); //GPIOC
- 将GPIOC的引脚10、9、8、7、6设置为高电平。
GPIO_SetBits(GPIOC,GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);
- 配置GPIOB的所有引脚为推挽输出模式,最大输出速率为50MHz。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // PORTBÍÆÍìÊä³ö
- 初始化GPIOB的配置参数。
GPIO_Init(GPIOB, &GPIO_InitStructure); //GPIOB
- 将GPIOB的所有引脚设置为高电平。
GPIO_SetBits(GPIOB,GPIO_Pin_All);
- 延时50毫秒。
delay_ms(50); // delay 50 ms
代码解释:
GPIO_InitTypeDef结构体包含了GPIO引脚的各种配置参数,如引脚模式、速度、输出类型等。RCC_APB2PeriphClockCmd函数用来使能GPIO端口的时钟,没有时钟供电,GPIO端口无法正常工作。GPIO_PinRemapConfig函数用来配置GPIO引脚的复用功能,例如禁用SWD以使JTAG功能得以使用。GPIO_Init函数用来初始化GPIO端口的配置参数。GPIO_SetBits函数用来设置GPIO引脚的电平,高电平或低电平。delay_ms函数用来延时一段时间,确保GPIO配置生效。
注意:
- 以上代码仅供参考,具体的GPIO配置参数需要根据您的硬件设计和功能需求进行调整。
- 在使用GPIO端口之前,请确保您已经了解GPIO端口的特性和工作原理。
希望这份教程能够帮助您更好地理解STM32 GPIO初始化配置过程。
原文地址: https://www.cveoy.top/t/topic/m9Wq 著作权归作者所有。请勿转载和采集!