作者很好奇在hal库只带的阻塞方式和hal_Delay()函数中的时间是如何进行配置的 也没有进行时钟的配置啊 就去深入的了解了一下;
在这里作者以串口发送的轮询函数为例:
找到hal库里面的串口发送函数
找到该函数的原形:
发现定义了个tickstart变量和一个HAL_GetTick()函数 猜测该函数可能和计数有关 再看下面
有一个关于timeout的函数 我们找到他的原型
在该函数的原型 我们又发现了tickstart变量和一个HAL_GetTick()函数 并且让timeout值等于他
那我们就去找找这个变量和这个函数
就发现了原来HAL_GetTick函数是读取计数值的一个函数 那我们就要去找这个计数值是多久计数一次 那我们就去跳转uwTickFreq变量
发现他是一个1ms更新一次的中断的变量 该变量就是hal库的时基
我们再去在HAL_Delay()函数
发现HAL_Delay函数也是用的这个变量 HAL_GetTick()可以读取该变量
至此 就是作者对于hal库只带的延时函数和阻塞方式的一些看法