当前位置: 首页 > wzjs >正文

网站手机版中国wix网站制作公司

网站手机版,中国wix网站制作公司,山东网站营销推广费用,wordpress 相关帖子资料来自正点原子 在学习江科大教程示例的时候默认系统时钟是72MHZ,但是这个系统时钟是怎么过来的呢,通过时钟树以及相关的资料的学习可知,系统时钟它可以是内部RC时钟HSI 8MHZ通过锁相环倍频而来,也可以是外部晶振4-16MHZ通过锁相…

  资料来自正点原子

         在学习江科大教程示例的时候默认系统时钟是72MHZ,但是这个系统时钟是怎么过来的呢,通过时钟树以及相关的资料的学习可知,系统时钟它可以是内部RC时钟HSI 8MHZ通过锁相环倍频而来,也可以是外部晶振4-16MHZ通过锁相环倍频而来。但是我们在写程序的过程中好像并没有配置过程。

    通过deepseek得知:

  • STM32 芯片上电后,首先执行启动文件(如startup_stm32f10x.s),该文件会调用 SystemInit() 函数。
  • SystemInit() 是标准库(如 STM32F10x Standard Peripheral Library)提供的函数,其默认配置会将外部 8MHz 晶振通过 PLL 倍频到 72MHz。

但如果我们不想用外部时钟做为系统时钟的来源,而是内部时钟作为系统时钟该怎么设置呢?比如用内部时钟8MHZ设置输出36MHZ的系统时钟

配置函数

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"void SetSysClockToHSI_36MHz(void) {// 1. 将 RCC 配置复位到默认状态RCC_DeInit();// 2. 使能 HSI(内部 8MHz 时钟)RCC_HSICmd(ENABLE);// 3. 等待 HSI 稳定while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);// 4. 配置 PLL:HSI/2 = 4MHz -> PLL倍频9倍 -> 36MHzRCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9);// 5. 使能 PLLRCC_PLLCmd(ENABLE);// 6. 等待 PLL 就绪while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);// 7. 配置总线分频系数(可选)RCC_HCLKConfig(RCC_SYSCLK_Div1);    // AHB 时钟 = 36MHzRCC_PCLK1Config(RCC_HCLK_Div2);    // APB1时钟 = 18MHz(最大36MHz)RCC_PCLK2Config(RCC_HCLK_Div1);     // APB2时钟 = 36MHz// 8. 切换系统时钟到 PLLRCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);// 9. 等待系统时钟切换成功while (RCC_GetSYSCLKSource() != 0x08); // 0x08表示PLL作为系统时钟
}//int main(void) {
//    // 调用自定义时钟配置函数
//    SetSysClockToHSI_36MHz();
//    
//    // 后续初始化代码(开启外设时钟、GPIO初始化等)
//    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//    // ... 其他初始化代码
//    
//    while(1) {
//        // 主循环代码
//    }
//}

该配置能设置为内部时钟倍频后得到的36MHZ的系统时钟。

内部时钟设置

  •   HSI(内部高速时钟信号) 的 PLL (锁相环)输入限制

STM32F10x 系列中,当选择 HSI 作为 PLL 时钟源 时,必须对 HSI 进行 2 分频(即 HSI/2 = 4MHz)。可以通过库函数发现没有其它选项
PLL 的倍频系数范围为 2~16 倍,因此最高输出频率:无法通过 HSI 达到 72MHz。最大是64MHZ,因此如果想达到72MHZ必须要使用外部时钟源。

  • APB1最大能达到的速度是36MHZ,因此当系统时钟的速度大于36MHZ的时候,APB1的时钟都需要分频设置一下。
  • 为什么都设置为72MHZ作为内部系统时钟呢,全速USB的系统时钟需要48MHZ,72MHZ通过1.5倍分频后刚好是48MHZ。
  • 为什么不常用内部时钟做系统时钟呢?因为内部时钟温漂大,它的震动频率会随着温度变化幅度大。


以外部晶振作为系统时钟如果不想设置为72MHZ,那么该怎么配置这个函数呢?

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"void SetSysClockToHSE_72MHz(void) {// 复位RCC配置RCC_DeInit();// 使能HSERCC_HSEConfig(RCC_HSE_ON);while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);// 配置PLL:HSE=8MHz → 倍频9 → 72MHzRCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);RCC_PLLCmd(ENABLE);while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);// 配置总线分频RCC_HCLKConfig(RCC_SYSCLK_Div1);    // AHB = 72MHzRCC_PCLK1Config(RCC_HCLK_Div2);     // APB1 = 36MHz(最大36MHz)RCC_PCLK2Config(RCC_HCLK_Div1);     // APB2 = 72MHz// 切换系统时钟到PLLRCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while (RCC_GetSYSCLKSource() != 0x08);
}int main(void) {SetSysClockToHSE_72MHz();// 后续初始化代码...
}

该函数要放在主函数最前面。可以通过修改参数调整系统时钟比如:

 // 配置PLL:HSE=8/2MHz → 倍频9 → 36MHzRCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_9);

如此就修改了默认系统时钟为36MHZ


      在学习TIM2的时候发现它是APB1总线上的设备,但是APB1的总线频率是36MHZ,为什么在设置TIM2的时钟频率的时候还是72MHZ呢,这是因为APB1上的定时器时钟又被硬件自动倍频了。使得APB1上的定时器时钟能够允许在较快时钟频率下工作。但是APB1上的其它外设还是在36MHZ的频率下工作。

看图:

关键区别总结

特性APB1 Peripheral Clock (PCLK1)APB1 Time Clock(定时器时钟)
作用对象APB1总线上所有外设的寄存器访问仅APB1总线上的定时器模块
频率决定因素直接由HCLK和APB1预分频系数决定由PCLK1决定,可能自动倍频(×2)
典型场景低速外设通信(如I2C、UART)定时器高精度操作(如PWM、输入捕获)
配置影响修改APB1分频系数直接影响PCLK1频率修改APB1分频系数可能触发定时器时钟倍频


文章转载自:

http://dHoD042B.tLfzr.cn
http://QDB13cLD.tLfzr.cn
http://wiDGGvOf.tLfzr.cn
http://SsRDh9lA.tLfzr.cn
http://PJAGMWoe.tLfzr.cn
http://i3wGWidw.tLfzr.cn
http://IKKpbbH6.tLfzr.cn
http://VMLyBGFq.tLfzr.cn
http://rVYqmjPH.tLfzr.cn
http://39KoT9UC.tLfzr.cn
http://K4T5pdhw.tLfzr.cn
http://tRQM77As.tLfzr.cn
http://HEZZHjNZ.tLfzr.cn
http://GveArg8M.tLfzr.cn
http://PQD9G7GK.tLfzr.cn
http://ZCByiyFk.tLfzr.cn
http://Lw9pG7dJ.tLfzr.cn
http://yD3zXXWb.tLfzr.cn
http://SsXdvGvb.tLfzr.cn
http://RXrkAspy.tLfzr.cn
http://yxiDAcWr.tLfzr.cn
http://oLlF25Ik.tLfzr.cn
http://LFZDpvqz.tLfzr.cn
http://8i828lL3.tLfzr.cn
http://ESSIshQ2.tLfzr.cn
http://8wODJfAj.tLfzr.cn
http://4IeJ2bib.tLfzr.cn
http://yKcl4BAi.tLfzr.cn
http://UM9dEA8h.tLfzr.cn
http://PR3kxz72.tLfzr.cn
http://www.dtcms.com/wzjs/766117.html

相关文章:

  • 新闻媒体网站开发文档高端的响应式网站建设公司
  • 在线教育网站模板js网站一键变灰
  • 网站建设的脑图规划专业网络优化
  • 阿里云oss可以做网站视频做动图的网站
  • 做外汇看哪个网站齐诺网站建设
  • 网站如何做营销网址大全页面设置在哪
  • 新开传奇网站180火龙dw怎么做网站注册登入页面
  • 网站布局方法随州论坛
  • 郑州威盟网站建设公司怎么样做网站 不是计算机专业
  • 怎么知道网站关键词的搜索来源网站设计背景怎么写
  • 做数学题目在哪个网站好2345网址导航大全
  • 网站链接建设的作用响应式网站免费模板下载
  • 济南济阳哪有做网站的企业邮箱多少钱
  • 温州专业制作网站网站开发技术项目式教程
  • 网站运营需要哪些资质石家庄公司网络推广
  • 网站 反链wordpress更新文件放在哪里
  • 酒店网站建设报价单wordpress完全版教材
  • 台州椒江区建设局网站网站建设专家是干嘛的
  • 富阳做网站公司微信网站应用开发
  • 个人网站页面设计素材1m带宽可以建设电商网站吗
  • 网站删除模块做推广哪些网站好
  • 怎么搜索别人的wordpress模板济南seo优化
  • 查网站域名备案天津做做网站
  • 定兴网站建设猎头公司网站建设
  • 移动网站开发基础知识上海智能网站建设公司
  • 做网站生意不赚钱dede网站建设流程
  • 做企业网站需要注意什么国内网站设计
  • 北京网站建设公司服务哪家好网站权重高+做别的关键词
  • 合肥专门做网站的公司有哪些找客户的软件
  • 东莞一站式网站建设wordpress您的主题支持一个菜单