打印
[资料工具]

NV32F100使用 FEE 外部晶振作为系统时钟

[复制链接]
846|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.NV32Config.h 文件中定义 #define USE_FEE( 此时#define USE_FEI 应当被注释掉)
2.定义外部晶振的频率, 单位为 KHZ, 如开发板上的晶振为 12M, 即为 12000KHZ, 则同样在 NV32Config.h定义为 #define EXT_CLK_FREQ_KHZ 12000
3.计算出所要得到的总线时钟, 即先分频, 而后倍频( 1280 倍) , 外部时钟分频在 ICS.c 中查找到 void
ICS_SetClkDivider(uint32_t u32ClkFreqKHz); 这个函数, 根据对应所选的晶振, 来配置相应的分频关系
case 12000L:/* 开发上为 12MHz 的晶振 */
ICS->C1 = (ICS->C1 & ~(ICS_C1_RDIV_MASK)) | ICS_C1_RDIV(4);
break;
参考如下表格进行分频
syinit 函数中我们定义了, 超过 4MHZ,则将 OSC_CR[RANGE]置位, 目的就是为了能将分频后的频率限制在红色字体以内
#if (EXT_CLK_FREQ_KHZ >=4000)
sICSConfig.oscConfig.bRange = 1; /* high range */
#endif
所以超过 4MHZ 的话, 选择右边的分频位, 例程中的为外接 12MHZ 晶振
*首先分频位选择 4, 即 512 分频,ICS->C1 = (ICS->C1 & ~(ICS_C1_RDIV_MASK)) | ICS_C1_RDIV(4)再倍频 1280 得到总线时钟:BUS_CLOCK=12000000/512*1280=30MHZ得到总线频率为 30MHZ, 在 NV32Config.h 中定义
#elif (EXT_CLK_FREQ_KHZ == 12000)
#define BUS_CLK_HZ 30000000L
*当选择分频位为 3 时, 即 256 分频 , ICS->C1 = (ICS->C1 & ~(ICS_C1_RDIV_MASK)) | ICS_C1_RDIV(3)再倍频 1280 得到总线时钟: BUS_CLOCK=12000000/256*1280=60MHZ
同样, 修改 BUS_CLK_HZ 值为 6000000L
#elif (EXT_CLK_FREQ_KHZ == 12000)
#define BUS_CLK_HZ 60000000L

相关帖子

沙发
939280709| | 2017-5-15 16:25 | 只看该作者
多谢分享!

使用特权

评论回复
板凳
hdsdkce| | 2017-7-24 15:14 | 只看该作者
感谢分享

使用特权

评论回复
地板
Sunriver_Yao| | 2017-12-12 23:39 | 只看该作者
有所明白!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

695

帖子

2

粉丝