该函数本质上是对arr寄存器进行写操作,本人试验了无数方法,快要崩溃了最终得出结论,要么是mdk编译器优化有问题,要么是芯片寄存器有点毛病。 本人如果只用以下函数
__HAL_TIM_SetAutoreload(&htim3,R_Frq*T_Count);
烧录了差不多几十次才成功对arr写操作一次,在lcd上显示。
而如果我这样
__HAL_TIM_SetAutoreload(&htim3,R_Frq*T_Count-1);
那么将会完全成功。此处Frq等于4,T_Count也就是50~1500左右,两个数都是常数(uint32_t和uint8_t)。本人也魔怔了,进行了很多次强行转换各种操作,依然没用,不减一个数或者加一个数之后应该是完全没有对arr寄存器写进去,这点本人在lcd上测试有了验证。本人也是百思不得其解。