At the start of the program the LED is on momentarily, then off, and does not come back on. I have this same interrupt functioning in a non-FreeRTOS application so I know the interrupt and callback appears to be working.
I have read the section on M4 implementation, as mentioned, I have used FreeRTOS in quite a few CMSIS based firmware projects without problems, and in fact I am using the same FreeRTOSConfig file.
What can the issue be?
UART Receive Non-Functioning with HAL Firmware
Hello:
This issue is using and STM32L4, and FreeRTOS v9.
HAL is being a problem with interrupts on the UART. My FreeRTOSConfig.h has this:
~~#define configPRIOBITS 4
~~#define configLIBRARYLOWESTINTERRUPTPRIORITY 3
~~#define configLIBRARYMAXSYSCALLINTERRUPTPRIORITY 3
~~#define configKERNELINTERRUPTPRIORITY ( configLIBRARYLOWESTINTERRUPTPRIORITY << (8 – configPRIOBITS) )
~~#define configMAXSYSCALLINTERRUPTPRIORITY ( configLIBRARYMAXSYSCALLINTERRUPTPRIORITY << (8 – configPRIOBITS) )
I know the scheduler is working OK because the systick is generated by TIM17, at the end of SystemClockConfig() this code:
HALNVICSetPriorityGrouping(NVICPRIORITYGROUP4);
HALNVICSetPriority(SysTickIRQn, 15, 0);
And a task has no problem executing after scheduler launch. The UART is configured for interrupt callback and at the end of the configuration file:
HALNVICSetPriority(USART3IRQn, 3, 0);
HALNVICEnableIRQ(USART3IRQn);
The callback (toggle a LED when active rx)
void HALUARTRxCpltCallback(UARTHandleTypeDef* uartHandle)
{
HALGPIOTogglePin(GPIOB, GPIOPIN8);
HALUARTReceiveIT(&huart3, rxBuff, 4);
}
In main():
MXUSART3UARTInit();
HALUARTReceiveIT(&huart3, rxBuff, 4);
UART Receive Non-Functioning with HAL Firmware
Hi, figured it out. Didn’t have one of the priorities set in HAL correctly.