STM32中的GPIO_Init()函数的分析
学习STM32时,首先要熟悉流水灯例程,在这里就来分析流水灯中的GPIO_Init()函数
例如:流水灯例程中使用的端口是macLED1_GPIO_PORT=GPIOB,
控制的引脚是GPIO_Pin_0,
引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出),
引脚的速率是GPIO_Speed_50MHz,
用到的寄存器是CRL
将上述的引脚、模式、速率换算成32位的16进制,分别是:
1) 控制的引脚是GPIO_Pin_0
换算成32位的16进制是:0x0000 0001
2) 引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出)
换算成32位的16进制是:0x0000 0010
3) 引脚的速率是GPIO_Speed_50MHz
换算成32位的16进制是:0x0000 0003
然后调用库函数GPIO_Init(),初始化GPIOB
GPIO_Init(macLED1_GPIO_PORT, &GPIO_InitStructure);
GPIO_Init()函数的定义如下:
GPIO Mode Configuration
currentmode=((uint32_t)GPIO_InitStruct->GPIO_Mode)&((uint32_t)0x0F);