记录一个hel_delay失效的情况

其中rxpacket的代码逻辑是
uint8_t NRF24L01_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t len)
{/* 1、片选选中 */NRF24L01_CSN_LOW;/* 2、写寄存器地址(读指令) */Driver_SPI_SwapByte(reg);/* 3、循环读取多个字节数据(写什么无所谓) */for (uint8_t i = 0; i < len; i++){*pBuf++ = Driver_SPI_SwapByte(0);}/* 4、片选取消 */NRF24L01_CSN_HIGH;return 0;
}
这一段代码导致系统定时器失效,具体原因还不清楚
解决方法:使用通用定时器另外写延时函数
void HAL_Delay_us(uint32_t Delay)
{uint32_t tickstart = __HAL_TIM_GET_COUNTER(&htim2);uint32_t wait = Delay;/* Add a freq to guarantee minimum wait */if (wait < HAL_MAX_DELAY){wait += (uint32_t)(uwTickFreq);}uint32_t ticknow = __HAL_TIM_GET_COUNTER(&htim2);while ((ticknow - tickstart) < wait){ticknow = __HAL_TIM_GET_COUNTER(&htim2);}
}
