int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //LED1-->PE.5 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化 GPIO
while(1)
{
GPIO_Write(GPIOE,0);
Delay_ms(250);
GPIO_Write(GPIOE,0xffff);
Delay_ms(250);
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟
右键跳转至

继续右键stm32f10x_rcc.h跳转至stm32f10x_rcc.h

若是无法判断挂载到AHB或者是APB2还是APB1 则在stm32f10x_rcc.h
找到以下三条语句,右键跳转
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
第一次查找
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);

右键stm32f10x rcc.c文件中的
assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
语句跳转至【用于观察APB2的外设有哪些】

如下图可观察到APB2上的所有外设

第二次查找
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
查询对APB1上的哪些外设进行设置

右键后便是APB1上的所有外设

查询完成之后便知道打开哪些时钟,进而单片机可以工作
反例验证
回到主函数,注意,以下几处的名称需要相同

现注释掉以下语句
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟

编译后是无报错的


进行软件仿真


设置好后点击

继续点击system analyzer window

再点击run

可观察到界面是无波形的

正常情况下观察波形
再将以下语句复原
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟

再编译,重复以上操作,注意点击logic analyzer


继续设置


再点击run ,便可在界面观察到波形

