STM32 HAL库中Tick中断的问题

STM32 HAL库中Tick中断的问题:在Tick中断时,调用HAL_IncTick()对uwTick加1。外部程序通过GetTick()得到uwTick的值来使用。并没有考虑变量的访问保护问题。是否说32位的arm,在访问uwTick时,因为一条指令就能完成,因此不用考虑uwTick的保护问题呢?

参考GPT和自己的思路:

在访问 uwTick 变量时,实际上并不能保证一定只有一条指令,因此在多线程情况下,需要考虑对 uwTick 变量的访问保护问题。可以使用互斥量(Mutex)或者自旋锁(Spin lock)等机制来防止 uwTick 变量被多个线程同时访问和修改。因此,在 STM32 HAL 库中,为了确保 uwTick 变量的可靠性,需要考虑变量的访问保护问题。

这个操作并不是原子的,所以还是要考虑的

  1. HAL库里是ST提供的; 2.uwTick 是32位的,操作时原子级的
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^