STM32/STM8技术论坛
直播中

zhang

未满1年用户 3经验值
擅长:嵌入式技术
私信 关注
[讨论]

关于freertos任务中usb文件系统写入数据的问题

请问一下,我用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();
				}
		}

}

更多回帖

发帖
×
20
完善资料,
赚取积分