牛卧堂MCU技术交流
标题:
SysTick
[打印本页]
作者:
arm_nuedu
时间:
2017-8-11 19:11
标题:
SysTick
Systick函数
__STATIC_INLINE void CLK_SysTickDelay(uint32_t us)
{
SysTick->LOAD = us * CyclesPerUs;
SysTick->VAL = (0x00);
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
...
}
CyclesPerUs是定义的12M/1000 000。这一步是不是可以认定systick的时钟源为HXT?
但是
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;//不是设定为72M,HCLK吗????
我该怎么理解???
作者:
a_ziliu
时间:
2017-8-14 11:12
看hclk的source
void SystemCoreClockUpdate(void)
{
uint32_t u32Freq, u32ClkSrc;
uint32_t u32HclkDiv;
u32ClkSrc = CLK->CLKSEL0 & CLK_CLKSEL0_HCLK_S_Msk;
/* Update PLL Clock */
PllClock = CLK_GetPLLClockFreq();
if(u32ClkSrc != CLK_CLKSEL0_HCLK_S_PLL)
{
/* Use the clock sources directly */
u32Freq = gau32ClkSrcTbl[u32ClkSrc];
}
else
{
/* Use PLL clock */
u32Freq = PllClock;
}
u32HclkDiv = (CLK->CLKDIV & CLK_CLKDIV_HCLK_N_Msk) + 1;
/* Update System Core Clock */
SystemCoreClock = u32Freq / u32HclkDiv;
CyclesPerUs = (SystemCoreClock + 500000) / 1000000;
}
作者:
arm_nuedu
时间:
2017-8-14 16:16
谢谢
作者:
arm_nuedu
时间:
2017-8-14 16:27
我仔细看了这个函数,发现HCLK并不一直是72M,这是我一直以来的误区,谢谢。那如果设置为72M,从下面这个函数可以看出,HCLK选择的时钟源是PLLOUT,而PLLOUT选择有可能是HXT或者HIRC,是吧?
uint32_t CLK_SetCoreClock(uint32_t u32Hclk)
欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/)
Powered by Discuz! X3.2