-
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- 这行代码使能了GPIOA外设的时钟。在STM32微控制器中,每个外设都需要单独使能其时钟才能正常工作。
-
GPIO_InitTypeDef GPIO_InitStructure;
- 定义了一个名为
GPIO_InitStructure
的变量,该变量的类型是GPIO_InitTypeDef
。这是一个结构体类型,用于存储GPIO初始化的配置信息。
- 定义了一个名为
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- 将GPIO的模式设置为推挽输出模式(Push-Pull Output)。在这种模式下,引脚可以输出高电平或低电平。
-
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
- 指定要初始化的GPIO引脚为所有引脚(即GPIOA的所有引脚)。
GPIO_Pin_All
是一个宏,表示所有引脚。
- 指定要初始化的GPIO引脚为所有引脚(即GPIOA的所有引脚)。
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- 设置GPIO的速度为50MHz。这个参数决定了引脚切换速度的最大值。
-
GPIO_Init(GPIOA, &GPIO_InitStructure);
- 调用
GPIO_Init
函数,用前面定义的配置初始化GPIOA。GPIOA
是目标端口,&GPIO_InitStructure
是指向配置结构体的指针。
int main(void) {// 使能GPIOA外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 定义一个GPIO初始化结构体变量GPIO_InitTypeDef GPIO_InitStructure;// 设置GPIO模式为推挽输出模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 设置要初始化的GPIO引脚为所有引脚GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // 推挽输出模式,既可以输出真正的高电平,也可以输出低电平// 设置GPIO速度为50MHzGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;// 使用上述配置初始化GPIOAGPIO_Init(GPIOA, &GPIO_InitStructure); }
配置IO
- 调用
通过控制GPIO PB12来控制蜂鸣器(高电平蜂鸣器叫)
#include "stm32f10x.h" // Device header
#include "Delay.h"int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB时钟//配置GPIO初始化GPIO_InitTypeDef GPIO_InitStructure; //定义了一个名为GPIO_InitStructure的变量,该变量的类型是GPIO_InitTypeDef。这是一个结构体类型,用于存储GPIO初始化的配置信息。GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出模式,既可以输出真正的高电平,也可以输出低电平GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MGPIO_Init(GPIOB, &GPIO_InitStructure); //GPIO中B的初始化while (1){GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(500);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(500);}
}
stm32之蜂鸣器