在仿真界面看下你的主要时钟有没有切换过去吧,看你的这段时钟初始化,主时钟不像能切换到了外部时钟。在时钟没有切换到外部时钟的情况下,你也没对内部时钟时行分频,系统时钟只有2MHz。速度当然达不到10M了。你用下面这段时钟初始化代码,试试看吧。
static void MCU_Clock_Init(void)
{
CLK_DeInit(); //时钟寄存器初始化
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //内部时钟1分频
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); //主要时钟分频
CLK_HSECmd(ENABLE); //使能外部时钟
while(CLK_GetFlagStatus(CLK_FLAG_HSERDY) == RESET); //等待外部时钟稳定
(void)CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE); //自动切换到 外部主时钟
}
我做项目时,用的STM8S207RB,GPIO口的速度挺快的,没具体没时,在是在24M的外部时钟下,与内核时钟已相差不多了。
在仿真界面看下你的主要时钟有没有切换过去吧,看你的这段时钟初始化,主时钟不像能切换到了外部时钟。在时钟没有切换到外部时钟的情况下,你也没对内部时钟时行分频,系统时钟只有2MHz。速度当然达不到10M了。你用下面这段时钟初始化代码,试试看吧。
static void MCU_Clock_Init(void)
{
CLK_DeInit(); //时钟寄存器初始化
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //内部时钟1分频
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); //主要时钟分频
CLK_HSECmd(ENABLE); //使能外部时钟
while(CLK_GetFlagStatus(CLK_FLAG_HSERDY) == RESET); //等待外部时钟稳定
(void)CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE); //自动切换到 外部主时钟
}
我做项目时,用的STM8S207RB,GPIO口的速度挺快的,没具体没时,在是在24M的外部时钟下,与内核时钟已相差不多了。
举报