采用正点原子的例程里面的方法实现微秒级延时
void LL_uDelay(uint16_t us)
{
uint32_t temp;
SysTick->LOAD=us*(72000000/8000000); //时间加载
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; //清空计数器
}
执行LL_uDelay(10);实际延时13us
执行LL_uDelay(100);实际延时94us
执行LL_uDelay(1000);实际延时904us
执行LL_uDelay(5000);实际延时4504us