网站数据怎么做论文注释,网页无法访问此页面怎么办?网页打不开怎么解决,做短视频网站好,进入江苏省住房和城乡建设厅网站首页前言 STM32的时钟系统由多个时钟源和时钟树组成时钟源包括主时钟源#xff08;HSE#xff09;、内部高速时钟源#xff08;HSI#xff09;、内部低速时钟源#xff08;LSI#xff09;和外部低速时钟源#xff08;LSE#xff09;。时钟树由多个时钟分频器和时钟门控器组…前言 STM32的时钟系统由多个时钟源和时钟树组成时钟源包括主时钟源HSE、内部高速时钟源HSI、内部低速时钟源LSI和外部低速时钟源LSE。时钟树由多个时钟分频器和时钟门控器组成可以将输入时钟源分频得到多个时钟信号并且根据需要打开或关闭时钟门控器来控制时钟信号的输出。 下面这个是我从AI中查询的我觉得还是很有参考意义的 STM32的主时钟源为HSE可以通过外部晶振或者外部时钟信号输入。内部高速时钟源HSI为8MHz可以通过RCC_CR寄存器控制开关。内部低速时钟源LSI为40kHz主要用于RTC模块。外部低速时钟源LSE为32.768kHz同样用于RTC模块。 时钟树主要由以下几个部分组成 1.系统时钟分频器(SYSCLK)用于分频主时钟源或者内部高速时钟源得到系统时钟SYSCLK。 2.AHB总线时钟分频器(HCLK)用于分频系统时钟得到AHB总线时钟HCLK。 3.APB1总线时钟分频器(PCLK1)用于分频AHB总线时钟得到APB1总线时钟PCLK1。 4.APB2总线时钟分频器(PCLK2)用于分频AHB总线时钟得到APB2总线时钟PCLK2。 5.时钟门控器用于控制各个外设的时钟开关从而节省功耗。 下面对Stm32的时钟系统做一个系统性的复习和总结 Stm32时钟系统
时钟系统,理解时钟看那个CubeMX时钟配置较为方便虽然还是比较喜欢使用标准库哈哈
在Stm32中有五个时钟源分别为 HSI、HSE、LSI、LSE、PLL 从时钟频率来看可以分为高速时钟源和内部时钟源 HSI、HSE、PLL是高速时钟LSI和LSE是低速时钟 从来源来看分为外部时钟源和内部时钟源 HSE和LSE是外部时钟源其他的是内部时钟源 HSI 高速内部时钟 HSI是高速内部时钟RC振荡器频率为8MHZ 由内部的8MHZ的RC震荡器所产生 可以直接作为系统时钟或者二分频作为PLL输入 看下图就清楚了 HSE 高速外部时钟
HSE是高速外部时钟他的时钟信号由以下两种时钟源产生
HSE外部晶体/陶瓷谐振器说的简单一些就是晶振HSE用户外部时钟
这个频率的范围为4MHZ-16MHZ 一般接8MHZ的晶振 PLL 锁相环倍频输出
PLL是锁相环倍频输出PLL的输入可选
HSI二分频后输入HSE输入HSE二分频后输入
倍频可以选择2-16倍频但是最大的输出频率不能超过72MHZ
时钟的选择和选择倍频因子必须在其被激活前完成
如果要使用USB口PLL必须被设置为48或72MHZ的时钟用于提供48MHZ的USBCLK时钟 LSE 低速外部时钟
LSE是低速外部时钟接外部晶振频率为32.768KHZ
它为实时时钟RTC或者其他定时功能提供一个低功耗且精确的时钟源 LSI 低速内部时钟
LSI是低速内部时钟RC震荡器频率为40KHZ,独立看门狗的时钟源只能是LSI,同时LSI是一个低耗的时钟源
它可以在停机和待机模式下保持运行为独立看门狗和自动唤醒单元提供时钟 SYSCLK 系统时钟的选择
系统时钟SYSCLK的时钟来源可以是以下几种
HSI 高速内部时钟 8MHZHSE 高速外部时钟 8MHZPLL 锁相环输出 8MHZ-72MHZ最大不能超过72MHZ 系统中所有外设的时钟来源都是来源于SYSCLK,SYSCLK通过AHB时钟分频后送给各模块使用
其中
AHB总线、内核、内存和DMA使用的是HCLK时钟8分频至系统时钟就是systick滴答时钟至Cortex自由运行时钟FCLKAPB1外设时钟和定时器2-7APB2外设时钟和定时器1和定时器8ADC,可分频2、4、6、8分频ADCCLK最大14MHZ RTC 实时时钟
RTC实时时钟有以下三个来源
HSE 128分频LSE 作为RTC时钟的输入LSI 作为RTC时钟的输入 CSS 时钟安全系统
一般来说MCU的时钟基本上来源于外部晶振8MHZ经过PLL锁相环倍频后传递给系统时钟
但是如果晶振电路出现了错误产生不了精确的时钟那么CSS将会起作用 他会把系统时钟自动切换成HSI内部高速晶振频率为8MHZ MCO 内部时钟输出引脚
MCU允许输出时钟信号到外部MCO引脚这个引脚是PA8
这个MCO时钟输出引脚可以输出
PLL锁相环2分频HSI 内部高速时钟HSE 外部高速时钟SYSCLK 系统时钟 STM32时钟框图 STM32启动文件的作用以及CL、VL、XL、LD、MD、HD的含义
启动文件的作用在Stm32f10x_hd.s中文件注释中已经详细介绍经过翻译如下
设置初始栈顶指针SP设置初始PC,让其初始值为Reset Handler设置除ISR地址外的向量表项配置时钟系统同时配置外部时钟系统安装在STM3210E-EVAL板上的SRAM作为数据内存使用可选由用户决定在C库中调用main()函数复位后CortexM3处理器处于线程模式优先级为Privileged,并且栈Stack设置为Main 总的来说就是
初始化栈指针和必要的程序从Systeminit()函数进入到main()函数对于stm32,定义系统时钟首先在system_stm3210x.c文件中修改宏即可建立中断服务入口地址将中断向量和中断服务函数链接起来 CL、VL、XL、LD、MD、HD 文件的含义
Stm32根据不同的使用场景和FLASH的大小分为了不同的产品不同的产品的缩写不同
CL : 互联型产品Stm32F105/107 系列VL 超值型产品Stm32F100系列XL : 超高精度产品Stm32F101/103系列LD : 低密度产品FLASH小于64kMD : 中密度产品FLASH等于64K或者128KHD : 高密度产品 FLASH大于128K SysTick 滴答定时器
SysTick主要用来延时或者是实时系统的心跳时钟这样可以节省MCU的资源,不用浪费一个定时器 SysTick是一个24位的到倒计数定时器当计数到0时将从RELOAD寄存器中自动重装载定时初值开始新一轮计数。只要不把SysTick控制及状态寄存器中的使能位清除就永不停息 即使在睡眠状态下也能工作运行 使用SysTick来实现延时极大的节省了系统资源 SysTick定时器被捆绑在NVIC中断用于产生SYSTICK中断中断号为15 SysTick的中断优先级也可以设置 在Stm32F10xxx参考手册中 ,系统滴答校准值为9000当系统滴答时钟设定为9MHZ为HCLK/8的最大值时产生1ms的基准 CM3为SysTick提供两个时钟源
内核的自由运行时钟FCLK这个就是HCLK时钟 自由表现在不来自于系统时钟HCLK在系统时钟停止时FCLK也继续运行 外部参考时钟STCLK 这个一般是HCLK,AHB总线的1/89MHZ SysTick滴答定时器在FreeRTOS中就是使用SysTick滴答定时器来推动任务的切换和时间的管理 固件库中SysTick的配置在misc.c和core_cm3.h文件中
其中SysTick的时钟源选择在misc.c文件中初始化SysTick在在core_cm3.h文件中
SysTick的时钟源选择
SysTick的初始化
开启SysTick中断并且使能SysTick中断以及SysTick中断的时间间隔
简单的说ticks的值就是relaod的值中断会在val0的时候产生两次中断就是val的值从reload到0的时间
从初始值开始向下计数计数到0产生中断如此反复 使用SysTick实现延时
选择外部时钟HCLK八分频此时时钟为9MHZ 我们在上面已经说过,当系统滴答时钟设定为9MHZ为HCLK/8的最大值时产生1ms的基准 初始化完成后即可实现延时
将延时加载到LOAD寄存器中并且清空计数器等待时间到达关闭计数器清空计数器
间间隔
简单的说ticks的值就是relaod的值中断会在val0的时候产生两次中断就是val的值从reload到0的时间
从初始值开始向下计数计数到0产生中断如此反复 使用SysTick实现延时
选择外部时钟HCLK八分频此时时钟为9MHZ 初始化完成后即可实现延时
将延时加载到LOAD寄存器中并且清空计数器等待时间到达关闭计数器清空计数器