博客
关于我
OpenMCU(五):STM32F103时钟树初始化分析
阅读量:792 次
发布时间:2023-02-24

本文共 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?????
    • ?????????????????
    • ????????????????????????

    转载地址:http://xdpfk.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    Openmax IL (二)Android多媒体编解码Component
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(二):GD32E23xx FreeRTOS移植
    查看>>
    OpenMCU(五):STM32F103时钟树初始化分析
    查看>>
    OpenMCU(四):STM32F103启动汇编代码分析
    查看>>