发新帖本帖赏金 20.00元(功能说明)我要提问
返回列表
打印
[APM32F1]

APM32F103使用ST的库配置96/120MHz时钟

[复制链接]
1917|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
南河壹号|  楼主 | 2023-8-12 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 南河壹号 于 2023-8-14 10:24 编辑

#申请原创# #技术资源# ​https://blog.csdn.net/qq_43751565/article/details/132250669?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169183067616800222847054%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169183067616800222847054&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-132250669-null-null.142^v92^chatgptT0_1&utm_term=APM32F103%E4%BD%BF%E7%94%A8ST%E7%9A%84%E5%BA%93%E4%BF%AE%E6%94%B9%E6%97%B6%E9%92%9F%E5%92%8C%E8%AE%BE%E7%BD%AEFLASH%E4%BB%A3%E7%A0%81%E5%BB%B6%E8%BF%9F%E5%80%BC&spm=1018.2226.3001.4187
图片加载不出来可以去CSDN查看,链接见上

1、当系统复位信号发生的时候,程序将执行复位中断函数,而在复位中断函数中是先执行SystemInit函数后在执行__main函数,如下图所示:
​编辑
2、系统会调用SystemInit函数完成系统时钟的配置,系统时钟配置的过程如下所示:
​编辑
在系统时钟配置的第三步有多个函数可以选择,这里可以根据自己的需求选择相应的配置流程,只需要在system_stm32f10x.c文件中定义相应的宏即可(默认配置为72MHz),这里我们添加96MHz和120MHz

  • 1、在system_stm32f10x.c如下位置添加这两行宏定义

​编辑

  • 2、接着再添加如下几行
​编辑


  • 3、再在下面位置添加如下几行
​编辑

  • 4、再再在下面位置添加如下几行
​编辑

  • 5、再再再也是最重要的一步,复制static void SetSysClockTo72(void)整个函数在这个函数后面,注意条件编译函数,不然复制后会报错,再在里面进行相应的修改,重点修改两个位置,见下图,120MHz也是同样的道理

​编辑
​编辑

  • 6、在第一个图片位置进行修改会提示没有定义,需要进行如下修改
           1. 在stm32f10x.h里面添加如下几行
​编辑


           2.在stm32f10x_flash.h里面添加如下几行
​编辑

  • 7、到这里就大功告成了,看是否成功,下面是主函数代码,源码里面也给了使用库函数修改时钟的方法,最后面百度网盘自提
#include "stm32f10x.h"                  // Device header
#include "led.h"
#include "rcc.h"


void delay(u32 i)
{
        while(i--);
}

int main()
{
        RCC_ClocksTypeDef RCC_Clocks;
      
//        RCC_HSI_Config(RCC_PLLMul_16);
//        RCC_HSE_Config(RCC_PLLSource_HSE_Div1,RCC_PLLMul_12);
      
        RCC_GetClocksFreq(&RCC_Clocks);
      
        LED_Init();
        while(1)
        {
                GPIO_ResetBits(LED0_PORT,LED0_PIN);
                GPIO_ResetBits(LED1_PORT,LED1_PIN);
                delay(6000000);
                GPIO_SetBits(LED0_PORT,LED0_PIN);
                GPIO_SetBits(LED1_PORT,LED1_PIN);
                delay(6000000);
        }
      
}

最后看编译结果,结果是16进制的96MHz,成功

​编辑


至于为什么需要设置成3等待周期,见下图
​编辑

最后再补充一点:如果使用的外部晶振不是8MHz,需要在stm32f10x.h里面如下位置进行修改
​编辑

附件给源码,有需要自取,新手只有2MB附件上传,给百度网盘链接吧


链接:https://pan.baidu.com/s/1vDZDyVVCsXV3d9UmD_OEog

提取码:1234

--来自百度网盘超级会员V5的分享




使用特权

评论回复

打赏榜单

21小跑堂 打赏了 20.00 元 2023-08-18
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2023-8-18 18:28 回复TA
详解ST库配置96/120MHz时钟,步骤较为详细 
沙发
supernan| | 2023-8-13 19:28 | 只看该作者
至于为什么需要设置成3等待周期

使用特权

评论回复
评论
南河壹号 2023-8-14 08:59 回复TA
详情见官网用户手册FLASH寄存器说明 
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

7

帖子

0

粉丝