完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
void SYS_Init(void)
{ /*---------------------------------------------------------------------------------------------------------*/ /* Init System Clock */ /*---------------------------------------------------------------------------------------------------------*/ /* Enable Internal RC clock */ CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk); /* Waiting for IRC22M clock ready */ CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk); /* Switch HCLK clock source to Internal RC and HCLK source divide 1 */ CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_CLKDIV_HCLK(1)); /* Enable external 12MHz XTAL, internal 22.1184MHz */ CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk | CLK_PWRCON_OSC22M_EN_Msk); /* Enable PLL and Set PLL frequency */ CLK_SetCoreClock(PLLCON_SETTING); /* Waiting for clock ready */ CLK_WaitClockReady(CLK_CLKSTATUS_PLL_STB_Msk | CLK_CLKSTATUS_XTL12M_STB_Msk | CLK_CLKSTATUS_OSC22M_STB_Msk); /* Switch HCLK clock source to PLL, STCLK to HCLK/2 */ CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_PLL, CLK_CLKDIV_HCLK(2)); /* Enable UART module clock */ CLK_EnableModuleClock(UART0_MODULE); /* Enable PWM module clock */ CLK_EnableModuleClock(PWM01_MODULE); CLK_EnableModuleClock(PWM23_MODULE); /* Select UART module clock source */ CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1)); /* Select PWM module clock source */ CLK_SetModuleClock(PWM01_MODULE, CLK_CLKSEL1_PWM01_S_HXT, 0); CLK_SetModuleClock(PWM23_MODULE, CLK_CLKSEL1_PWM23_S_HXT, 0); /* Reset PWMA channel0~channel3 */ SYS_ResetModule(PWM03_RST); /* Update System Core Clock */ SystemCoreClockUpdate(); /*---------------------------------------------------------------------------------------------------------*/ /* Init I/O Multi-function */ /*---------------------------------------------------------------------------------------------------------*/ /* Set P3 multi-function pins for UART RXD and TXD */ SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk); SYS->P3_MFP |= (SYS_MFP_P30_RXD | SYS_MFP_P31_TXD); /* Set P2 multi-function pins for PWMA Channel0~3 */ SYS->P2_MFP &= ~(SYS_MFP_P20_Msk | SYS_MFP_P21_Msk | SYS_MFP_P22_Msk | SYS_MFP_P23_Msk); SYS->P2_MFP |= (SYS_MFP_P20_PWM0 | SYS_MFP_P21_PWM1 | SYS_MFP_P22_PWM2 | SYS_MFP_P23_PWM3); } /* Enable Internal RC clock */ CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk); //这上面是使能内部RC,后面好像还有,,,, /* Waiting for IRC22M clock ready */ CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk); /* Enable external 12MHz XTAL, internal 22.1184MHz */ CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk | CLK_PWRCON_OSC22M_EN_Msk); //这里为何这么操作,用了个逻辑或,如果用这个,前面那句是不是可以不用。。。 /* Enable PLL and Set PLL frequency */ CLK_SetCoreClock(PLLCON_SETTING); /* Waiting for clock ready */ CLK_WaitClockReady(CLK_CLKSTATUS_PLL_STB_Msk | CLK_CLKSTATUS_XTL12M_STB_Msk | CLK_CLKSTATUS_OSC22M_STB_Msk); 还有等待PLL稳定,等待内部RC稳定,等待外部晶振稳定,那么前面那个等待内部RC稳定是不是可以也不用。 |
|
相关推荐
1个回答
|
|
|
bsp; */ /*---------------------------------------------------------------------------------------------------------*/ CLK_HSICmd(ENABLE); /* Enable Internal High Speed oscillator (HSI) */ while (CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == RESET); /* Wait for HSI to be ready */ //CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); /* Select HSI as system clock source */ CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); /* Set HCLK = CPUCLK */ CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); /* Set CPUCLK = HSI */}
在这段代码中,CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1)和CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1)实际上都是对系统时钟的配置,因为CLK_PRESCALER_HSIDIV1将HSI分频为1,相当于不分频,而CLK_PRESCALER_CPUDIV1将CPU时钟分频为1,又相当于不分频,所以这两个函数调用存在重复配置的问题。可以保留一项,去掉另一项。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
1089 浏览 1 评论
1907 浏览 0 评论
1885 浏览 1 评论
3307 浏览 5 评论
3631 浏览 9 评论
1092浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1411浏览 1评论
1909浏览 0评论
1225浏览 0评论
1360浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 16:53 , Processed in 0.637769 second(s), Total 44, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
8951