注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
dvd1478的个人空间 https://home.eeworld.com.cn/space-uid-194541.html [收藏] [复制] [分享] [RSS]
日志

[LPC54102]System Clock 系统时钟的设置

热度 1已有 1703 次阅读2015-5-2 22:00 |个人分类:NXP

在系统时钟上的设置 最直接的感觉就是太麻烦呢,这也是无法避免的问题,Cortex的时钟都是很麻烦,NXP却没有STM  TI  飞思卡尔等有那些图形化初始化设置工具,只能吃中硬骨头。
系统时钟的设置

对于CLKIN 与CLKOUT的引脚 如下:  万利和官网的都没有用外部时钟输入。但都有时钟的输出,但在都可以设置为关闭 Board_SetupClocking(board_sysinit.c) 中设置

IRC  与 RTC 的大小

时钟的分配情况:


对于频率的设置是在 Board_SetupClocking(board_sysinit.c)中的
Chip_SetupIrcClocking(BOARD_MAINCLOCKRATE)  (Board_sysinit.c)进行设置
void Chip_SetupIrcClocking(uint32_t iFreq)
{
PLL_CONFIG_T pllConfig;
PLL_SETUP_T pllSetup;
PLL_ERROR_T pllError;
Chip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_IRC_OSC | SYSCON_PDRUNCFG_PD_IRC);
Chip_Clock_SetSystemPLLSource(SYSCON_PLLCLKSRC_IRC);
setupFlashClocks(iFreq);
Chip_SYSCON_PowerDown(SYSCON_PDRUNCFG_PD_SYS_PLL);
pllConfig.desiredRate = iFreq;
pllConfig.InputRate = 0;
pllConfig.flags = PLL_CONFIGFLAG_FORCENOFRACT;
pllError = Chip_Clock_SetupPLLData(&pllConfig, &pllSetup);
if (pllError == PLL_ERROR_SUCCESS) {
  pllSetup.flags = PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_ADGVOLT;
  pllError = Chip_Clock_SetupSystemPLLPrec(&pllSetup);
}
Chip_Clock_SetSysClockDiv(1);
Chip_Clock_SetMainClockSource(SYSCON_MAINCLKSRC_PLLOUT);
Chip_SYSCON_Enable_ASYNC_Syscon(true);
Chip_Clock_SetAsyncSysconClockDiv(1);
Chip_Clock_SetAsyncSysconClockSource(SYSCON_ASYNC_IRC);
}
测试设置的频率,没有设置的为0
void ClockCheck(void)
{  
    uint32_t MainClockRate = 0;
    uint32_t SystemClockRate = 0;
    uint32_t AsyncSyscon_ClockRate = 0;
    uint32_t SysTickClockRate =0;
    uint32_t Main_A_ClockRate = 0;
    uint32_t Main_B_ClockRate = 0;
    uint32_t ADCClockRate = 0;
    MainClockRate  = Chip_Clock_GetMainClockRate();
    uart_int_printf_block("\r\n MainClockRate %ld \r\n", MainClockRate);
    SystemClockRate= Chip_Clock_GetSystemClockRate();
    uart_int_printf_block("\r\n SystemClockRate %ld \r\n", SystemClockRate);
    AsyncSyscon_ClockRate = Chip_Clock_GetAsyncSyscon_ClockRate();
    uart_int_printf_block("\r\n AsyncSyscon_ClockRate %ld \r\n", AsyncSyscon_ClockRate);
    SysTickClockRate = Chip_Clock_GetSysTickClockRate();
    uart_int_printf_block("\r\n SysTickClockRate %ld \r\n", SysTickClockRate);
    Main_A_ClockRate = Chip_Clock_GetMain_A_ClockRate();
    uart_int_printf_block("\r\n Main_A_ClockRate %ld \r\n", Main_A_ClockRate);
    Main_B_ClockRate = Chip_Clock_GetMain_B_ClockRate();
    uart_int_printf_block("\r\n Main_B_ClockRate %ld \r\n", Main_B_ClockRate);
    ADCClockRate = Chip_Clock_GetADCClockRate();
    uart_int_printf_block("\r\n ADCClockRate %ld \r\n", ADCClockRate);
}




本文来自论坛,点击查看完整帖子内容。

发表评论 评论 (1 个评论)
回复 okwh 2016-5-1 14:31
请教, 如果不设置这个,默认的是什么时钟??

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章