你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32f1时钟系统整理

[复制链接]
STMCU小助手 发布时间:2021-11-27 10:06
STM32f1时钟系统

一、祭出STM32F1的官方时钟框图

20201008101308453.png


20201008101308299.jpg



二、寄存器说明

1、时钟控制寄存器RCC_CR

20201008101308232.jpg


第0位:HSION(0,关闭;1,开启)

第1位:HSIRDY(0,HSI未就绪;1,HSI就绪)

第16位:HSEON(0,关闭;1,开启)

第17位:HSERDY(0,HSE未就绪;1,HSE就绪)

第19位:CSSON(0,时钟检测关闭;1,时钟监控开启)

第24位:PLLON(0,关闭PLL;1,使能PLL)

第25位:PLLRDY(0,PLL未锁定,1:PLL锁定)


2、时钟配置寄存器RCC_CFGR

20201008101308204.jpg


20201008101307851.jpg



第1:0位SW: 软件设置时钟源

00:HSI为系统时钟

01:HSE为系统时钟

10:PLL作为系统时钟

11:时钟不可用

第3:2位SWS:硬件指示时钟源

00:HSI为系统时钟

01:HSE为系统时钟

10:PLL作为系统时钟

11:时钟不可用

第7:4位HPRE:软件设置AHB的分频系数(具体见参考手册)

20201008101307795.jpg


第10:8位PPPRE1:软件设置低速APB1(PCLK1)的与分频系数(具体见参考手册)

20201008101308154.jpg


第13:11位PPPRE2:软件设置高速APB2(PCLK2)的预分频系数(具体见参考手册)

20201008101308173.jpg


第15:14位ADCPPE:软件设置ADC的时钟频率(最大14Mhz)

20201008101308153.jpg


        00:APB2的2分频

        01:APB2的4分频

        10:APB2的6分频

        11:APB2的8分频

第16位PLLSRC:软件选择PLL的时钟源(关闭PLL时写入)

20201008101308171.jpg


        0:HSI的2分频作为PLL的输入时钟

        1:HSE作为PLL的输入时钟

第17位PLLXTPRE:软件选择HSE作为PLL输入时是否分频



        0:HSE不分频

        1:HSE 2分频

第21:18位PLLMUL:软件设置PLL的倍频系数(最高不超过72M,实测超过100M后还能工作)

20201008101307972.jpg


        详见参考手册

第22位USBPRE:软件设置USB时钟

20201008101308155.jpg


        0:PLL时钟1.5倍分频作为USB时钟

        1:PLL直接作为USB时钟

第26:24位MCO:时钟输出PA8引脚(对于STM32F1来说,最高频率不能超过IO口的频率50Mhz)



        0xx:无输出

        100:输出系统时钟SYSCLK

        101:HSI输出

        110:HSE输出

        111:PLL的2分频输出



3、时钟中断寄存器RCC_CIR

4、APB2外设复位寄存器(RCC_APB2RSTR)

对应位写1复位相应外设,写0无作用

20201008101308262.jpg


5、APB1 外设复位寄存器 (RCC_APB1RSTR)

对应位写1复位相应外设,写0无作用

20201008101308280.jpg


6、  AHB外设时钟使能寄存器 (RCC_AHBENR)   

对应位写1开启相应外设,写0关闭外设



7、 APB2 外设时钟使能寄存器(RCC_APB2ENR)

对应位写1开启相应外设,写0关闭外设



8、 APB1 外设时钟使能寄存器(RCC_APB1ENR)

对应位写1开启相应外设,写0关闭外设



9、备份域控制寄存器 (RCC_BDCR)

20201008101308229.jpg


第0位LSEON:软件设置,外部低速振荡器使能:0:关闭,1:开启;

第1位LSERDY:硬件指示,外部低速LSE就绪:0:未就绪,1:就绪;

第15位RTCEN:RTC时钟使能:0:关闭,1开启;

10、控制/状态寄存器(RCC_CSR)

20201008101308238.jpg


第0位LSION:软件设置,内部低速振荡器就绪:0,:40kHz振荡器时钟就绪

第1位LSIRDY:硬件指示,内部低速振荡器就绪:1:就绪,0:未就绪;

第29位IWDGRSTF窗口看门狗复位标志:1:发生窗口看门狗复位;0:未发生

第30位WWDGRSTF独立看门狗复位标志:1:发生独立看门狗复位;0:未发生


主要相关库函数:

1、void RCC_DeInit(void);//将外设RCC寄存器设为缺省值;

2、void RCC_HSEConfig(uint32_t RCC_HSE);//设置外部高速晶振(HSE);

3、void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);//调整内部高速晶振(HSI)校准值

4、void RCC_HSICmd(FunctionalState NewState);//使能或者失能内部高速晶振(HSI)

5、void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);//设置PLL时钟源及倍频系数

6、void RCC_PLLCmd(FunctionalState NewState);//使能或者失能PLL

7、void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);//设置系统时钟(SYSCLK)源

8、void RCC_HCLKConfig(uint32_t RCC_SYSCLK);//设置AHB时钟(HCLK)

9、void RCC_PCLK1Config(uint32_t RCC_HCLK);//设置低速AHB时钟(PCLK1)

10、void RCC_PCLK2Config(uint32_t RCC_HCLK);//设置高速AHB时钟(PCLK2)

11、void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);//使能或者失能指定的RCC中断

12、 void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource);//设置USB时钟(USBCLK)

13、void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);//设置ADC时钟(ADCCLK)

14、void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);//使能或者失能AHB外设时钟

15、void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//使能或者失能APB2外设时钟

16、void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);//使能或者失能APB1外设时钟

17、void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);//强制或者释放高速AHB外设复位

18、void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//强制或者释放高速APB(APB2)外设复位

19、void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);//强制或者释放低速APB(APB1)外设复位

20、void RCC_ClockSecuritySystemCmd(FunctionalState NewState);//使能或者失能时钟安全系统

21、void RCC_MCOConfig(uint8_t RCC_MCO);//选择在MCO管脚上输出的时钟源,警告:当选中系统时钟作为MCO管脚的输出时,注意它的时钟频率不超过50MHz(最大I/O速率)。

22、FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);//检查指定的RCC标志位

//RCC_FLAG_HSIRDY ,HSI晶振就绪;RCC_FLAG_HSERDY ,HSE晶振就绪;

//RCC_FLAG_PLLRDY ,PLL就绪;RCC_FLAG_LSERDY ,LSI晶振就绪;

//RCC_FLAG_LSIRDY ,LSE晶振就绪;RCC_FLAG_PINRST ,管脚复位 ;

//RCC_FLAG_PORRST ,POR/PDR复位;RCC_FLAG_SFTRST ,软件复位 ;

//RCC_FLAG_IWDGRST ,IWDG复位;RCC_FLAG_WWDGRST ,WWDG复位;

//RCC_FLAG_LPWRRST ,低功耗复位

23、void RCC_ClearFlag(void);//清除RCC的复位标志位

24、ITStatus RCC_GetITStatus(uint8_t RCC_IT);//检查指定的RCC中断发生与否

//输入:RCC_IT_LSIRDY,LSI晶振就绪中断;RCC_IT_LSERDY,LSE晶振就绪中断

//RCC_IT_HSIRDY,HSI晶振就绪中断;RCC_IT_HSERDY,HSE晶振就绪中断

//RCC_IT_PLLRDY,PLL就绪中断;RCC_IT_CSS,时钟安全系统中断

25、void RCC_ClearITPendingBit(uint8_t RCC_IT);//清除RCC的中断待处理位

//RCC_IT_LSIRDY,LSI晶振就绪中断;RCC_IT_LSERDY,LSE晶振就绪中断

//RCC_IT_HSIRDY,HSI晶振就绪中断;RCC_IT_HSERDY,HSE晶振就绪中断

//RCC_IT_PLLRDY,PLL就绪中断;RCC_IT_CSS,时钟安全系统中断


20201008101308453.png
20201008101308258.jpg
20201008101308274.jpg
收藏 评论0 发布时间:2021-11-27 10:06

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版