问一个小问题 关于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; //清空计数器
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
SysTick时钟频率==HCLK/8(Mhz)==SystemCoreClock/8(Mhz)
不应该这样吗? SysTick一个计数时长(1/(SystemCoreClock/8000000)).......(s)
1us需要计数次数为10^-6÷[1/(SystemCoreClock/80000000)]=SystemCoreClock/8
一周热门 更多>