问一个小问题 关于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条回答
lipengyun168
1楼-- · 2019-07-21 20:48
讲的漂亮
冷江静
2楼-- · 2019-07-21 22:42
原子哥,可以在解释一下fac_us=SystemCoreClock/8000000这个为啥是1us吗?
freddiemore
3楼-- · 2019-07-22 01:17
feicien 发表于 2016-2-5 22:38
看到原子哥的教程也在这纠结,想图方便百度一下没找到==俺的理解是
SYSCLK即SystemCoreClock
HCLK即SYSCL ...

SysTick时钟频率==HCLK/8(Mhz)==SystemCoreClock/8(Mhz)
不应该这样吗?      SysTick一个计数时长(1/(SystemCoreClock/8000000)).......(s)
1us需要计数次数为10^-6÷[1/(SystemCoreClock/80000000)]=SystemCoreClock/8
伟仔
4楼-- · 2019-07-22 04:41
 精彩回答 2  元偷偷看……
jinchunxing
5楼-- · 2019-07-22 06:20
fac_us=9,systick时钟是9mhz,systick装载值为n*9,每中断一次即为nus
defhero
6楼-- · 2019-07-22 10:31
讲的很好

一周热门 更多>