如何设置系统时钟,在2.0.4SDK相关本地版本的源代码中,有两个系统时钟设置,即设置系统时钟。
void系统初始化(void)
{
SystemCoreClock=\系统\时钟;
setbit32(GP_CONTROL_REG,EM_MAP,23);//EM_MAP=(0x003E)
memset((void*)0x80000,0,0x3000);
__启用\u irq();
}
和
设置系统时钟();
但是set\u system\u clocks()函数里面看不到的代码,这是系统时钟设置的真正函数,请帮忙回答这个问题,非常感谢!
周四,2014-02-27 08:02
#1
系统时钟问题
你好Randyzhou,
要设置系统时钟,只需更改system\u ARMCM0.c文件中的这两行:
#定义uuxtal(12000000UL)/*振荡器频率*/
#定义\系统\时钟(4*\额外)
希望这有帮助,
顺致敬意,
对话支持团队。
兰州,
set\u system\u clocks()是一个ROM代码函数。
来源是:
void set\u system\u clocks(void)//设置hclk和pclk
{
字节i;
字节j;
对于(i=0;i<4;i++)
{
设置16(CLK\ U AMBA\ U REG,PCLK\ U DIV,i);
对于(j=0;j<4;j++)
{
SetBits16(CLK\ U AMBA\ U REG,HCLK\ U DIV,j);
}
}
SetWord16(CLK_AMBA_REG,0x00);//最快
}
所以,你唯一能做的就是改变分频器:
//将时钟设置为16兆赫以加速memeset操作
设置32(CLK\ U AMBA\ U REG,HCLK\ U DIV,0);
设置32(CLK\ U AMBA\ U REG,PCLK\ U DIV,0);
否则,您可以使用内部RC16振荡器。
顺致敬意,
对话支持团队。
额外信息:
表48:DA14580数据表(第42页)的CLK\ U AMBA\ U REG(0x50000000):
APB接口时钟,与HCLK级联:
00=hclk除以1
01=hclk除以2
10=hclk除以4
11=hclk除以8
AHB接口和微处理器时钟。源时钟
除以:
00=hclk除以1
01=hclk除以2
10=hclk除以4
11=hclk除以8
顺致敬意,
对话支持团队。
你好Dialog,
我正在使用带有DIA14580DEVKT-B的sdk5.0.2.1,我想将µC频率设置为8MHz。
我更改了trng.c文件中的一些参数:
void rfpt_init(无效)
{
挥发性uint16等待;
SetWord16(CLK_RADIO_REG,0x0099);//En BLE CLK,disble timer,En RFCU,RFCU div by 2 and BLE_div by 2-->为0x0089
SetWord16(BLE_CNTL2_REG,0x1000);//设置BLE_CNTL2_REG,参数BITFLD_BLE_CLK_SEL为8-->为0x2000(BITFLD_BLE_CLK_SEL=16)
SetBits16(CLK\ U AMBA\ U REG,OTP\ U ENABLE,1);
SetBits16(CLK_AMBA_REG,HCLK_DIV,1);//DIV by 2微控制器时钟-->为0
SetBits16(TEST\u CTRL\u REG,ENABLE\u RFPT,1);
//建议的设置
//设置建议的设置();
rf_regs();
iff校准();
DCoffsetCalibration();
WAIT100();//等待100 us完成所有DCF信号
}
我通过一个100欧姆的电阻测量功耗(所以100mV=1mA),我可以观察到广告框@8MHz和@16MHz,我希望在8MHz时有一半的功耗,但几乎没有变化(见附件):功耗从3.06mA下降到2.88mA。
所以我的问题是为什么幂不除以2?(数据表显示功耗为200µA/MHz)
雷马克:
在我的文件系统\u ARMCM0.c上,我有:
#定义\uuuhsi(800000ul)
#定义uuxtal(12000000UL)/*振荡器频率*/
#定义\系统\时钟(4*\额外)
但是车载振荡器是16MHz的,你能告诉我XTAL是否有用吗?
提前谢谢你帮我。
当做,
达米安
嗨,达米恩,
时钟可以降低到8MHz,但这是不建议和不支持的,因为BLE性能无法保证。除此之外,在频率的差异很小,你不应该有一个8MHz和16MHz时钟功率减少。
谢谢你的对话