平时的HAL_Delay()都是毫秒单位的,但是进去这个函数看看的话,也看不出来是咋回事,我也不理解。但是就说在网上知道了一个方法:用SysTick_Config();这个函数就是来控制Delay函数的单位1代表计数器计数多少次。比如SysTick_Config(80);80000000/1000=1000000,所以Delay里面为1000000才代表是1s,也就是Delay(1)为1微秒。同理可知,如SysTick_Config(80000)时,Delay(1)为1ms。
但是这样不好,因为好多地方用到了Delay,这样改动比较大,可以在网上用现成的Delay_us();
void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us-9; //时间加载 SysTick->VAL=0x00; //清空计数器 SysTick->CTRL=0x01 ; //开始倒数 do { temp=SysTick->CTRL; |