OpenMCU(五):STM32F103时钟树初始化分析
发布日期:2025-04-29 02:39:50 浏览次数:2 分类:精选文章

本文共 2053 字,大约阅读时间需要 6 分钟。

STM32F103????????????

STM32F103??????STC?????????????ARM Cortex-M3??????????????????AHB????????????????????????????????I2C?SPI?UART?ADC?DAC?????????????????????

????????????STM32F103???????????????PLL???????????????????

1. HSI?PLL??

STM32F103?????????HSI????????PLL??????HSI????????????32.768 kHz?PLL???HSI?????????????????PLL_MUL?????????

  • HSI????HSE??HSE???HSI?????????????HSE_PREDIV_DIV1???HSI??32.768 kHz??1????32.768 kHz?
  • PLL????PLL_MUL????PLL_MUL???????????????PLL_MUL???16??????PLLCLK = (HSI / 2) * PLL_MUL = (32.768 kHz / 2) * 16 = 64 MHz?

2. ???????

?STM32F103??PLL?????????????????

  • ??HSI????????????????
  • ??PLL???HSI??????????????16?
  • ????????PLL???????SYSCLK = 64 MHz?
  • ????????????????HCLK?PCLK1?PCLK2?
  • 3. PCB?HSI??

    ???PCB???????????

    • HSI??????????????????????
    • PCB??????????HSI???HSE????PLL??????
    • ???????????????????????????

    4. ????????

    ?STM32F103??????????????????

    void SystemClock_Config(void)
    {
    RCC_ClkInitTypeDef clkinitstruct = {0};
    RCC_OscInitTypeDef oscinitstruct = {0};
    /* ??PLL */
    oscinitstruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    oscinitstruct.HSEState = RCC_HSE_OFF;
    oscinitstruct.HSIState = RCC_HSI_ON;
    oscinitstruct.PLL.PLLState = RCC_PLL_ON;
    oscinitstruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
    oscinitstruct.PLL.PLLMUL = RCC_PLL_MUL16;
    if (HAL_RCC_OscConfig(&oscinitstruct) != HAL_OK)
    {
    /* ????? */
    while(1);
    }
    /* ?????? */
    clkinitstruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
    clkinitstruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    clkinitstruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    clkinitstruct.APB2CLKDivider = RCC_HCLK_DIV1;
    clkinitstruct.APB1CLKDivider = RCC_HCLK_DIV2;
    if (HAL_RCC_ClockConfig(&clkinitstruct, FLASH_LATENCY_2) != HAL_OK)
    {
    /* ????? */
    while(1);
    }
    }

    5. ????

    ???????STM32F103???????????????????PLL?????????????????????????????????????????????????????????????

    ??????????

    • ???????????PLL?????
    • ?????????????????
    • ????????????????????????
    上一篇:OpenMCU(四):STM32F103启动汇编代码分析
    下一篇:OpenMCU(二):GD32E23xx FreeRTOS移植

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年05月11日 04时36分32秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    Hibernate二级缓存配置 2025-03-29
    element 如何使用自定义icon图标 2025-03-29
    element-plus修改主题颜色 2025-03-29
    element-plus的el-date-picker日期范围选择控件,根据开始日期限定结束日期的可选范围为开始日期到开始日期+30天 2025-03-29
    18 个一线工作中常用 Shell 脚本【实用版】 2025-03-29
    element-ui:el-input输入数字-整数和小数 2025-03-29
    ElementUI-el-progress改变进度条颜色跟文字样式 2025-03-29
    element事件(change,click)不触发 2025-03-29
    ELK原理与介绍(转) 2025-03-29
    ELK学习笔记(三)单台服务器多节点部署 2025-03-29
    ELK应用日志收集实战 2025-03-29
    elTable火狐浏览器换行 2025-03-29
    15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2023年深信服、奇安信、360等大厂网络安全校招面试真题合集(附答案),让你面试轻松无压力! 2025-03-29
    2024年全国程序员平均薪资排名:同样是程序员,为什么差这么多?零基础到精通,收藏这篇就够了 2025-03-29
    0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏) 2025-03-29
    100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了 2025-03-29
    10个程序员可以接私活的平台 2025-03-29
    10个运维拿来就用的 Shell 脚本,用了才知道有多爽,零基础入门到精通,收藏这一篇就够了 2025-03-29
    10条sql语句优化的建议 2025-03-29