题主由于原本都没试过正点原子例程,所以也是最近才发现问题所在,protues无法仿真的问题所在。
首先protues没办法仿真stm32F103ZET6,而正点原子的例程都是stm32F103ZET6的程序,所以一般我都用smtF103R6,而问题最关键的是在led.c里面有一部分使能PE端口时钟的代码,将其注释起来就可以了。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, 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(GPIOA, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
// GPIO_SetBits(GPIOA,GPIO_Pin_5); //PE.5 输出高
}
注释后烧录进去protues仿真,可以运行。这个小问题困扰了我好几次,主要做过就忘,所以特地写出来,加深印象,希望对别人也能有所帮助。
|