I set up a group of GPIO interrupt to do matrix keypad scan. When the ISR called, I call OSA_EventSet to signal the scan thread to do real scan.
But when I press the keypad quickly, the os kernel scheduler seems suspend all task that like the system hangup. So I replace all source code under [projectdir]\SDK\rtos\FreeRTOS\src with the latest FreeRTOS 8.2.1 source and leave the [projectdir]\SDK\rtos\FreeRTOS\port\gcc as original KSDK copied and so as freertos_config.h. Then the problem gone...
Is it the right way to upgrade the freertos version?
UPDATE: Sorry, I am wrong, the problem remained....the running tasks stopped.
消息编辑者为:yijun ma
Solved! Go to Solution.
It seems to me that you have nested interrupts running, and you might face the problem of a stack overflow. I recommend that you increase the task stack size (configMINIMAL_STACK_SIZE).
The other thing I can point to: as you are using RTOS API calls from an interrupt service routine: have you configured configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY according to your interrupt levels? See RTOS for ARM Cortex-M
I hope this helps,
Erich
It seems to me that you have nested interrupts running, and you might face the problem of a stack overflow. I recommend that you increase the task stack size (configMINIMAL_STACK_SIZE).
The other thing I can point to: as you are using RTOS API calls from an interrupt service routine: have you configured configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY according to your interrupt levels? See RTOS for ARM Cortex-M
I hope this helps,
Erich
Thank you Erich,
I will check these.