[STM32F1] STM32F103c8t6超频

[复制链接]
961|16
 楼主| poison0 发表于 2022-7-29 21:58 | 显示全部楼层 |阅读模式
STM32F103c8t6超频

STM32F103C8T6官方说的主频为72MHz。但为了好奇,我决定去网上买一个STM32f103最小系统进行超频。如下图所示:

7395262e3e7838bf00.png


 楼主| poison0 发表于 2022-7-29 22:05 | 显示全部楼层
像上图这种最小系统,一般都有一个LED灯,接在STM32的PC13上。一开始,我想通过LED的闪烁来看出主频是否变化,但视力有限,看不出72M和112M主频的变化。
 楼主| poison0 发表于 2022-7-29 22:05 | 显示全部楼层
所以我用逻辑分析仪来看高低电平的脉宽。如下图所示:
 楼主| poison0 发表于 2022-7-29 22:06 | 显示全部楼层
 楼主| poison0 发表于 2022-7-29 22:10 | 显示全部楼层
因为从STM32的时钟树可以看出,STM32的系统时钟是通过外部晶振倍频到72MHz频率的,所以我们只要修改其倍频值,那么就可以超频。
 楼主| poison0 发表于 2022-7-29 22:21 | 显示全部楼层
 楼主| poison0 发表于 2022-7-29 22:22 | 显示全部楼层
上图的的红色框框就是对外部晶振(这里是8MHz的外部晶振)进行倍频,即8MHz * 9 =72MHz的系统主频。所以主要是修改这个PLLMul,这样主频就会改变。
 楼主| poison0 发表于 2022-7-29 22:23 | 显示全部楼层
一开始,我没有改变频率,直接就是9倍频。然后我写了一个延时函数,在主循环里面,通过对io口的高低电平的控制,然后调用这个延时延时,通过逻辑分析仪来看其脉宽。
延时函数:

 楼主| poison0 发表于 2022-7-29 22:24 | 显示全部楼层
  1. void Delay_ms(int n)
  2. {
  3.         int i,j;
  4.        
  5.         for(i=n;i>0;i--)
  6.                 for(j=12000;j>0;j--);
  7. }
 楼主| poison0 发表于 2022-7-29 22:27 | 显示全部楼层
高低电平的控制:
  1. while(1)
  2. {
  3.         PIN = 0;
  4.         Delay_ms(500);
  5.         PIN = 1;
  6.         Delay_ms(500);
  7. }
 楼主| poison0 发表于 2022-7-29 22:28 | 显示全部楼层
当我设为9倍频时,即72MHz的主频时,上升沿和下降沿之间的脉宽为750ms。
 楼主| poison0 发表于 2022-7-29 22:28 | 显示全部楼层
 楼主| poison0 发表于 2022-7-29 22:33 | 显示全部楼层
当我设为13倍频时,即104MHz的主频时,上升沿和下降沿之间的脉宽为519ms。 并且此时就算是LED还可以闪烁。
 楼主| poison0 发表于 2022-7-29 23:01 | 显示全部楼层
 楼主| poison0 发表于 2022-7-29 23:04 | 显示全部楼层
但是当我设为14倍频时,即112MHz的主频时,上升沿和下降沿之间的脉宽为482ms。 而LED却不闪烁了。但可以通过逻辑分析仪可以看到io口电平还是改变的。
 楼主| poison0 发表于 2022-7-29 23:06 | 显示全部楼层
 楼主| poison0 发表于 2022-7-29 23:16 | 显示全部楼层
而15倍频的话,即主频为120Mhz,程序基本运行不了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

655

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部