|
就是我用RTOS 采集然后打印出来,想看一下这个采集数据的时间是不是可以精确定时采集。
就这一个任务。就是我看串口打印出来的时候应该是一秒都能打印了十次左右,我想知道是为啥呢?
void myTask1( void * arg)
{
TickType_t previousWakeTime = xTaskGetTickCount();
while(1)
{
HAL_ADC_Start_DMA(&hadc3,g_adc3_dma_data2,ADC_DATA_LENGTH1);//ADC的dma开始采集
if( g_adc3_dma_complete_flag1 == 1 )//采集数据完成,采集完成后再发送 111
{
for(int i=0;i<ADC_DATA_LENGTH1;i++)
{
printf("%d\r\n",g_adc3_dma_data2&0x0000ffff);
}
g_adc3_dma_complete_flag1 = 0;
memset(g_adc3_dma_data2,0,ADC_DATA_LENGTH1);//清除数据
}
}
vTaskDelayUntil(&previousWakeTime,pdMS_TO_TICKS(2000));
}
这是RTOS的配置
#define configUSE_PREEMPTION 1
#define configTICK_RATE_HZ ( 1000 )
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
#define configUSE_QUEUE_SETS 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ SystemCoreClock
#define configMAX_PRIORITIES ( 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 16 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 10 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 1
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_COUNTING_SEMAPHORES 1
#define configUSE_TICKLESS_IDLE 0
#define configCHECK_FOR_STACK_OVERFLOW 0
#define configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY 1
/* Run time stats gathering definitions. */
#define configGENERATE_RUN_TIME_STATS 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
#define portGET_RUN_TIME_COUNTER_VALUE() 0
|
|