delay_init函数困扰了我很久,今天理解了。
Stm32_Clock_Init(9);
delay_init(72);
初始化的语句,即sysclk=72,fac_us=9(无单位)。外部晶振为8MHZ, “Stm32_Clock_Init(9)”将时钟倍频到72MHZ。systick的时钟为外部时钟的1/8,所以systick(系统时钟)为9MHZ。系统运行9M次耗时1s,因此运行9次耗时1us。
fac_us没有单位,它只是在重装初值时起到作用,比如Systick->LOAD=nus*fac_us.
我是菜鸟,以上是我的理解,有问题希望大家改正。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); //选择外部时钟HCLK=16M, delay时钟8分频即2Mhz. SysTick_CLKSource_HCLK SysTick_CLKSource_HCLK_Div8
fac_us=SystemCoreClock/8000000; //为系统时钟的 fac_us=SystemCoreClock/8000000;
底下的8000000是哪里来的?
一周热门 更多>