STM32 系统时钟SYSCLK选择

3.    STM32 系统时钟SYSCLK选择

系统时钟来源可以是:HSI、PLLCLK、HSE,具体的由时钟配置寄存器RCC_CFGR的SW位配置

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先需要了解一下STM32系统时钟STM32系统时钟有多种源,其中最常用的是内部RC振荡器(HSI)和外部晶体振荡器(HSE)。系统时钟可以通过内部/外部时钟源的选择以及时钟分频器的设置进行配置。 下面是一个简单的STM32系统时钟显示实验的步骤: 1. 配置系统时钟源。选择内部RC振荡器(HSI)或外部晶体振荡器(HSE)作为系统时钟源,并设置时钟分频器的值。 2. 配置GPIO口为输出。用于实验中的LED灯需要连接到一个GPIO口上,所以需要将这个GPIO口配置为输出。 3. 初始化系统时钟。在main函数中调用RCC_Init函数,该函数用于初始化系统时钟。 4. 点亮LED灯。将GPIO口输出高电平,即可点亮LED灯。 下面是一个示例代码,可以作为参考: ```c #include "stm32f10x.h" void RCC_Init(void) { RCC_DeInit(); //将RCC寄存器重置为默认值 RCC_HSICmd(ENABLE); //使能内部RC振荡器 while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); //等待HSI稳定 RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); //将HSI作为系统时钟源 RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置HCLK分频器为1 RCC_PCLK1Config(RCC_HCLK_Div2); //设置PCLK1分频器为2 RCC_PCLK2Config(RCC_HCLK_Div1); //设置PCLK2分频器为1 FLASH_SetLatency(FLASH_Latency_0); //设置FLASH读取等待时间 FLASH_PrefetchBufferCmd(DISABLE); //关闭FLASH预取指令缓存 } void GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置GPIO口为PA0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置GPIO口为推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置GPIO口输出速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIO口 } int main(void) { RCC_Init(); //初始化系统时钟 GPIO_Init(); //初始化GPIO口 while(1) { GPIO_SetBits(GPIOA, GPIO_Pin_0); //点亮LED灯 for(int i = 0; i < 1000000; i++); //延时 GPIO_ResetBits(GPIOA, GPIO_Pin_0); //熄灭LED灯 for(int i = 0; i < 1000000; i++); //延时 } } ``` 在这个示例代码中,PA0口连接到了一个LED灯,通过循环不断地点亮和熄灭LED灯,从而使LED灯闪烁。 希望这个简单的示例代码可以帮助您了解STM32系统时钟的配置和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值