问一个小问题 关于fac_us=SystemCoreClock/8000000; 怎么是1US呢

2019-07-21 08:42发布

问一个小问题 关于fac_us=SystemCoreClock/8000000; 怎么是1US呢 72MHZ的八分频是9MHZ即SysTick即为9MHZ  那再除8M也不能是1us啊 ?下面的函数不是说明 fac_us ==1us吗?

void delay_us(u32 nus) { u32 temp;       SysTick->LOAD=nus*fac_us; //时间加载     SysTick->VAL=0x00;        //清空计数器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //开始倒数   do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达    SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //关闭计数器 SysTick->VAL =0X00;       //清空计数器   }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
taizonglai
2019-07-21 12:33
本帖最后由 zuozhongkai 于 2017-6-28 14:26 编辑

1us的意思是1us systick需要计的数。systick的时钟是SystemCoreClock的1/8。那么1us systick需要计的数不就是(SystemCoreClock/8)/10000000=SystemCoreClock/80000000了!还有,提问帖不要发成分享帖子!别人的最佳答案就没法设置,这样后面看到这个帖子的人就没法第一时间看到最佳答案了!

一周热门 更多>