FAQ0093AT32更换外部晶振后BSP修改方法

FAQ0093AT32更换外部晶振后BSP修改⽅法FAQ0093 AT32更换外部晶振后BSP修改⽅法
Questions: AT32 ⼯程项⽬在采⽤⾮ 8M 外部晶振时, 如何在 BSP 中进⾏修改。
Answer:
因⽰例的 BSP 和开发板都是基于 8 MHz 外部晶振来做的, 所以在实际应⽤中如果采⽤了⾮ 8 MHz 的外部晶
振的话, 需注意修改 BSP 中时钟配置以保证时钟频率的正确及稳定。 以下将介绍⼏点 BSP 修改的注意事项及步骤。
1. 使能宏定义
在⼯程的 system_at32f4xx.c ⽂件中, 打开期望的或接近期望的系统时钟频率的宏定义(请注意实际使⽤的该骑脖子
系列 MCU 的主频上限), 以 HSE 作为 PLL 时钟源进⾏倍频的宏定义列表如下, 以下说明将会以倍频系统时钟到 120 MHz 进⾏⽰例。
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz 24000000 */
/* #define SYSCLK_FREQ_36MHz 36000000 */
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
/* #define SYSCLK_FREQ_72MHz 72000000 */
/* #define SYSCLK_FREQ_96MHz 96000000 */
/* #define SYSCLK_FREQ_108MHz 108000000 */
#define SYSCLK_FREQ_120MHz 120000000 //使能相应时钟宏定义
/* #define SYSCLK_FREQ_144MHz 144000000 */
/* #define SYSCLK_FREQ_168MHz 168000000 */
/* #define SYSCLK_FREQ_176MHz 176000000 */
/
* #define SYSCLK_FREQ_192MHz 192000000 */
/* #define SYSCLK_FREQ_200MHz 200000000 */
/* #define SYSCLK_FREQ_224MHz 224000000 */
/* #define SYSCLK_FREQ_240MHz 240000000 */
2. 修改倍频参数
在使能了对应的宏定义之后, 修改相对应的系统时钟配置函数的时钟配置流程(如使能 SYSCLK_FREQ_120MHz,
对应的时钟函数为 SetSysClockTo120M)。 与 HSE 倍频相关的主要参数如下
项⽬参数描述
PLL 时钟源RCC_CFG_PLLRC_HSE选择 HSE 作为 PLL 时钟源
HSE 分频RCC_CFG_PLLHSEPSC_HSE HSE 不分频输⼊ PLL
RCC_CFG_PLLHSEPSC_HSE_DIV2HSE/2 输⼊ PLL
倍频因⼦RCC_CFG_PLLMULTxx倍频系数, xx 则表⽰倍频值
倍频范围RCC_CFG_PLLRANGE_GT72MHZ PLL 倍频后频率⼤于 72 MHz 时需要设置(只
针对于 AT32F403、 AT32F403A、 AT32F413、AT32F407 系列使⽤, AT32F421、 AT32F415系列此参数不使⽤)
⽰例使⽤ 12 MHz 外部晶振时配置 120 MHz 系统时钟时的各⽅式倍频参数修改如下
描述: 原 8 MHz HSE 倍频到 120 MHz 配置代码
计算: PLLCLK = HSE(8) * 15 = 120
RCC->CFG |= (uint32_t)(RCC_CFG_PLLRC_HSE | RCC_CFG_PLLMULT15 | RCC_CFG_PLLRANGE_GT72MHZ);
描述: 12 MHz HSE 不分频倍频到 120 MHz 配置代码
计算: PLLCLK = HSE(12) * 10 = 120
RCC->CFG |= (uint32_t)(RCC_CFG_PLLRC_HSE | RCC_CFG_PLLMULT10 | RCC_CFG_PLLRAN
超导磁流体GE_GT72MHZ);投机倒把行政处罚暂行条例
描述: 12 MHz HSE 2 分频后倍频到 120 MHz 配置代码
计算: PLLCLK = HSE(12) / 2 * 20 = 120
RCC->CFG |= (uint32_t)(RCC_CFG_PLLRC_HSE | RCC_CFG_PLLHSEPSC_HSE_DIV2 | RCC_CFG_PLLMULT20 |
RCC_CFG_PLLRANGE_GT72MHZ);
3. 修改系统频率定义值
在实际修改中, 如果客户想要⾮ BSP 宏定义的系统时钟, 修改⾃⼰想要的系统时钟倍频系数, ⽽倍频结果不
等于系统时钟频率的宏定义值时, 应将系统时钟频率的宏定义值改写为实际倍频出来的系统时钟频率值。
⽰例如果使能了SYSCLK_FREQ_120MHz 宏定义, 但实际配置的系统时钟倍频结果为 132 MHz (HSE 12 X 11 PLLMULT)时, 修改如下
#define SYSCLK_FREQ_120MHz 132000000
三星d988
4. 修改 HSE_VALUE
HSE_VALUE 宏定义值应该对应着⼯程应⽤中硬件采⽤的晶振频率来进⾏修改, 此宏定义在 at32f4xx.h 头⽂件中。
原 8 MHz 晶振时的定义如下
#define HSE_VALUE ((uint32_t)8000000)
采⽤ 12 MHz 晶振时的修改如下
#define HSE_VALUE ((uint32_t)12000000)
5. 特别注意
因 AT3F415 与 AT32F421 系列在 PLL 部分重新设计, 在采⽤ RCC_CFG_PLLMULTxx 倍频系数⽅式进⾏倍频时,
需要在 PLL 使能前额外的对 PLL 的输⼊时钟频率配置项 RCC_PLL_FREF 进⾏配置(详情可参考 Re
ference Manual 中
PLL 配置寄存器章节的 RCC_PLL[26:24])。 描述如下
南阳核电站位 26: 24PLL_FREF: PLL 输⼊时钟选择, 仅在 PLLCFGEN=0 时起作⽤000: PLL 使⽤ 3.9 MHz ~ 5 MHz 输⼊时钟;
001: PLL 使⽤ 5.2 MHz ~ 6.25 MHz 输⼊时钟;
010: PLL 使⽤ 7.8125 MHz ~ 8.33 MHz 输⼊时钟;
011: PLL 使⽤ 8.33 MHz ~ 12.5 MHz 输⼊时钟;
100: PLL 使⽤ 15.625 MHz ~ 20.83 MHz 输⼊时钟;
101: PLL 使⽤ 20.83 MHz ~ 31.255 MHz 输⼊时钟;
110: 保留;
111: 保留。
增加 PLL 输⼊时钟频率配置代码的位置如下
RCC->CFG |= (uint32_t)(RCC_CFG_PLLRC_HSE | RCC_CFG_PLLMULT15 | RCC_CFG_PLLRANGE_GT72MHZ); RCC_PLLFrefTableConfig(HSE_VALUE);
RCC->CTRL |= RCC_CTRL_PLLEN;
旧金山对日和约⽰例使⽤ 12 MHz 外部晶振时的 PLL 输⼊时钟频率配置如下
PLL 输⼊时钟代码
HSE库函数: RCC_PLLFrefTableConfig(HSE_VALUE);
寄存器: RCC_PLL |= (0x3 << 24);
HSE/2库函数: RCC_PLLFrefTableConfig(HSE_VALUE);
寄存器: RCC_PLL |= (0x1 << 24);
类型: MCU 应⽤
适⽤型号: AT32 全系列: AT32F403, AT32F403A, AT32F407, AT32F413, AT32F415, AT32F421主功能: 不针对具体功能
次功能: 不针对具体功能

本文发布于:2024-09-20 22:54:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/570761.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时钟   倍频   系统   配置   频率   定义   修改   和约
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议