STM32 HAL库中Tick中断的问题:在Tick中断时,调用HAL_IncTick()对uwTick加1。外部程序通过GetTick()得到uwTick的值来使用。并没有考虑变量的访问保护问题。是否说32位的arm,在访问uwTick时,因为一条指令就能完成,因此不用考虑uwTick的保护问题呢?
参考GPT和自己的思路:
在访问 uwTick 变量时,实际上并不能保证一定只有一条指令,因此在多线程情况下,需要考虑对 uwTick 变量的访问保护问题。可以使用互斥量(Mutex)或者自旋锁(Spin lock)等机制来防止 uwTick 变量被多个线程同时访问和修改。因此,在 STM32 HAL 库中,为了确保 uwTick 变量的可靠性,需要考虑变量的访问保护问题。
这个操作并不是原子的,所以还是要考虑的