Hello Everyone,
I am using NRF52833 in my project. My code is FREERTOS based. I am also using 2 UART, one is normal uart and other is LIBUARTE. I have also initialised timers in my tasks to perform some operations at regular intervals. My timers are not working.
The code for timers is as follows:-
#define QUEUE_LENGTH 10 #define ITEM_SIZE sizeof( let_btn_task_evt_t ) /* The variable used to hold the queue's data structure. */ static StaticQueue_t xStaticQueue; /* The array to use as the queue's storage area. This must be at least uxQueueLength * uxItemSize bytes. */ uint8_t led_queue_storage_area[ QUEUE_LENGTH * ITEM_SIZE ]; volatile TaskHandle_t led_task_handle = NULL; static TimerHandle_t button_timer_handle; static StaticTimer_t button_timer; static TimerHandle_t red_led_timer_handle; static StaticTimer_t red_led_timer; static TimerHandle_t grn_led_timer_handle; static StaticTimer_t grn_led_timer; err_rc_t init_led_button_task(void) { err_rc_t rc = RESULT_SUCCESS; do { /* Start the two tasks as described in the comments at the top of this file. */ led_task_handle = xTaskCreateStatic( led_button_task, /* Function that implements the task. */ "LEDBTN", /* Text name for the task. */ LED_BUTTON_TASK_STACK_SIZE, /* Number of indexes in the led_button_stack array. */ ( void * ) 1, /* Parameter passed into the task. */ LED_TASK_PRIORITY,/* Priority at which the task is created. */ led_button_stack, /* Array to use as the task's stack. */ &task_led_button_tcb ); /* Variable to hold the task's data structure. */ if(led_task_handle == NULL) { rc = RESULT_ERROR_FAILURE; break; } /* Create a queue capable of containing 10 uint64_t values. */ led_button_queue_handle = xQueueCreateStatic( QUEUE_LENGTH, ITEM_SIZE, led_queue_storage_area, &xStaticQueue ); if(led_button_queue_handle == NULL) { rc = RESULT_ERROR_FAILURE; break; } button_timer_handle = xTimerCreateStatic("ButtonTimer", 100, pdTRUE, ( void * ) 0, button_timer_callback, &button_timer); if( button_timer_handle == NULL ) { /* The timer was not created */ rc = RESULT_ERROR_FAILURE; break; } red_led_timer_handle = xTimerCreateStatic("RedTmr", 1000, pdFALSE, ( void * ) 0, red_timer_callback, //** &red_led_timer); if( red_led_timer_handle == NULL ) { /* The timer was not created */ rc = RESULT_ERROR_FAILURE; break; } grn_led_timer_handle = xTimerCreateStatic("GrnTmr", 1000, pdFALSE, ( void * ) 0, grn_timer_callback, &grn_led_timer); if( grn_led_timer_handle == NULL ) { /* The timer was not created */ rc = RESULT_ERROR_FAILURE; break; } } while(0); return rc; } void grn_timer_callback( TimerHandle_t xTimer ) { let_btn_task_evt_t evt; evt.id = LED_TASK_EVT_PROCESS_LED_RC1; led_btn_task_queue_event(evt); } void red_timer_callback( TimerHandle_t xTimer ) { let_btn_task_evt_t evt; evt.id = LED_TASK_EVT_PROCESS_LED_RC2; led_btn_task_queue_event(evt); } void button_timer_callback( TimerHandle_t xTimer ) { button_manager_timer_handle(); }
My doubt is that LIBUARTE settings is causing some issue. I am not sure about it. Just guessing. I have also attached sdk_config.h.
Please help me solve this issue.