void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高
}
第一条语句
GPIO_InitTypeDef GPIO_InitStructure;我们跳转到GPIO_InitTypeDef中可以看到其结构体内容为
typedef struct
{
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
初始化结构体。
该语句作用是将GPIO_InitTypeDef结构体命名为GPIO_InitStructure。
第二条语句
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);
该函数原型是void RCC_APB2PeriphClockCmd(u32 RCC_APV2Periph, FunctionalState NewState)
第一个参数就是由上面选取。
第二个参数则为ENABLE或者DISABLE。
第三,四,五条语句
对GPIO结构体初始化.
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
第六条语句
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO初始化 PB口。
第七条语句
GPIO_SetBits(GPIOB,GPIO_Pin_5); 输出高电平
GPIO_ResetBits(GPIOB,GPIO_PIn_5); 输出低电平
最后三局与前边第 2 3 4 5 句加起来的作用一样不过是将PB端口,变为了PE端口。
版权声明:本文为CSDN博主「shihuntz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shihuntz/article/details/122881435
暂无评论