请问一下,我用freertos系统的定时器,sendtime++满500的时候执行 usb文件系统写入数据的函数Flash_Write();这个函数需要300多ms跑完,按理来说他就算300多ms应该能在下一次sendtime满500的时候写完,但是我发现两次写入数据的时间差是800多ms,请问有大佬们知道怎么解决吗,网上查到taskENTER_CRITICAL();函数可能会影响,但是我屏蔽掉之后taskENTER_CRITICAL();后,Flash_Write();直接不运行了
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef htim)
{
/ USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 /
if (htim->Instance == TIM6) {
if(Timecnt < 1000)
{
Timecnt++;
}
else
{
StartWriteflag = 1;
}
sendtime++;
HAL_IncTick();
}
/ USER CODE BEGIN Callback 1 */
/* USER CODE END Callback 1 */
}
void StartTask03(void const * argument)
{
/* USER CODE BEGIN StartTask03 */
while(1)
{
osDelay(1);
if(sendtime >= 500)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
sendtime = 0;
if(StartFlashCounter < 1)
{
StartFlashCounter ++;
}
else
{
taskENTER_CRITICAL();
if(RecordFlag == 1 && StartWriteflag ==1)
{
Flash_Write();
}
// }
taskEXIT_CRITICAL();
}
}
}
更多回帖