最近在做NVC与STM32芯片的通信,因为NVC要匹配时序宽度,考虑到系统时钟的频率的设定,所以专门研究了一下,也是为了以后遇到的话可以回头看看笔记之类,也给大家做一个参考
STM32是8分频特性,具体的延迟函数可以参照下面的代码做修改
比如系统的频率为80Mhz,则分出来的频率为10MHZ,即HAL_Delay延迟的单位是1/10MHZ=0.1us,需要400us则需要乘以4000变为400us去设置,以后谨记。
__weak void HAL_Delay(uint32_t Delay){uint32_t temp;SysTick->LOAD = Delay * 4000;SysTick->VAL=0X00;//清空计数器SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源do{temp=SysTick->CTRL;//读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达SysTick->CTRL=0x00; //关闭计数器SysTick->VAL =0X00; //清空计数器}