MiniMax (14.04.2007 09:33, просмотров: 4882)
Есть вопрос по FreeRTOS к знатокам. Есть самодельная функция печати на некоторое устройство вывода
void lcd_printf( const char *format, ... )
{
char msgBuf[128] = {0};
va_list arglist;
va_start( arglist, format );
vsprintf(msgBuf,format,arglist );
va_end( arglist );
WriteLCD(msgBuf);
}
Вызов lcd_printf из задачи vKeypad вызывает зависание программы
(LPC2138 платформа).
xTaskCreate( vKeypad, ( const signed portCHAR * const )"Keypad" , configMINIMAL_STACK_SIZE, NULL,tskIDLE_PRIORITY,NULL);
Подозреваю, что проблема в выделяемой памяти.
Пробовал декларировать configMINIMAL_STACK_SIZE*2(*3,*4,...)
при создании задачи. Не помогает :-(
Это текущие настройки FreeRTOS
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 58982400 ) /* =14.7456MHz xtal multiplied by 4 using the PLL. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 4 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
Где могут быть грабли ?