hardfault inside vPortYield() for stm32

karthik366 wrote on Tuesday, March 25, 2014:

i am using stm32l152cb MCU and created 3 tasks in freertos and the execution goes to hardfault and when i checked it in call stack it shows it is due to the vPortYield() function at portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; how to avoid this exception.I configured the port priorities according to the freertos page(http://www.freertos.org/RTOS-Cortex-M3-M4.html)

void vPortYield( void )
{
/* Set a PendSV to request a context switch. */
portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;—>shows hardfault here

/* Barriers are normally not required but do ensure the code is completely
within the specified behaviour for the architecture. */
__DSB();
__ISB();

}

Regards

rtel wrote on Tuesday, March 25, 2014:

In this the only thing I can suggest is that maybe the CPU is in an unprivileged mode when the function is called.

You seem to be experiencing lots of varied problems that should just not occur. Where are you getting your start up code from? Did you base your application on one of the many pre-configured and known good examples that are provided for you?

Regards.

karthik366 wrote on Tuesday, March 25, 2014:

yes i downloaded the demo freertos code provided for the stm32l152xb series from freertos website and developed my application on it.i’m sorry i never checked the modes and i am not much aware of it, i’m just using the CMSIS stdperipheral libraries and the freertos api’s from the demo code.