下述代码只可使STM32F103C8T6的PA0输出低电压,而PB0没有输出。
只需将 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 提到 GPIO_Init(GPIOB,&GPIO_InitStructure); 的前一行,即先配置时钟,pB0就可以输出低电压了。
当然,在配置GPIO口时,应该要先配置时钟,可问题是为什么只有B口需要先配置,而A口可以后置呢?
当初写出这种代码的原因是因为keil5软件(我没有适配c99),它不支持在中间定义新的结构体。
于是我就把整个GPIO的参数放到了配置时钟的前面。
#include "stm32f10x.h" // Device header
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_RESET);
GPIO_Init(GPIOA,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);
while (1)
{
}
}