对delay_init函数的理解

2019-07-21 01:23发布

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.
我是菜鸟,以上是我的理解,有问题希望大家改正。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
ForestLi
1楼-- · 2019-07-22 23:17
 精彩回答 2  元偷偷看……
hope0116
2楼-- · 2019-07-22 23:59
单片机时钟是16M时   这样设置对不对,
        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是哪里来的?

一周热门 更多>