1. 有2种时钟切换方法,自动切换和手动切换。
2. 手动切换,程序在内部高速时钟下,控制led灯闪烁,当切换为低速时钟后,灯的闪烁速度应该变慢。理想情况下应该是这样的,但是没有切换过来。
GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow);
for (i = 0; i < 10; i++)
{
GPIO_ToggleBits(LED_GPIO_PORT, LED_GPIO_PINS);
delayMs(100);
}
CLK_LSICmd (ENABLE);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == RESET);//RESET 没有准备好 SET准备好了
CLK_SYSCLKSourceSwitchCmd(ENABLE);
if (CLK_GetSYSCLKSource() == CLK_SYSCLKSource_LSI)
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//不分频
for (i = 0; i < 10; i++)
{
GPIO_ToggleBits(LED_GPIO_PORT, LED_GPIO_PINS);
delayMs(100);
}
}
3. 时钟的输出,利用CCO把时钟信号输出到引脚上,再用示波器观察。
int main( void )
{
int i;
GPIO_Init(GPIOC, GPIO_Pin_4, GPIO_Mode_Out_PP_High_Fast);
CLK_CCOConfig(CLK_CCOSource_HSI, CLK_CCODiv_1);
//CLK_CCOConfig(CLK_CCOSource_HSI, CLK_CCODiv_16);
while(1);
return 0;
}
本文探讨了STM32微控制器中两种时钟切换方法:自动切换与手动切换,并通过LED闪烁实验验证手动切换的效果。同时介绍了如何利用CCO配置将时钟信号输出至GPIO引脚进行观察。
635

被折叠的 条评论
为什么被折叠?



