Hello, I want to start ethernet on stm32f7 but task always sticks on one place –
if (inHandlerMode())
{
if (xSemaphoreTakeFromISR(semaphoreid, &taskWoken) != pdTRUE) {
return osErrorOS;
}
portENDSWITCHINGISR(taskWoken);
}
else if (xSemaphoreTake(semaphoreid, ticks) != pdTRUE) {
return osErrorOS;
}
, and when I put breakpoint I receive this message:
Program received signal SIGINT, Interrupt.
0x08005352 in vPortRaiseBASEPRI () at C:/Projects/STM32F7/Middlewares/FreeRTOS/Source/Portable/GCC/ARM_CM7/r0p1/portmacro.h:215
215 __asm volatile
Any idea why is that. When I put my code in exmple of ethernet at stm it works fine.
stm32f7, vPortRaiseBASEPRI
stm32f7, vPortRaiseBASEPRI
I’m not sure where this code comes from.
~~~~
if (inHandlerMode())
{
if (xSemaphoreTakeFromISR(semaphoreid, &taskWoken) != pdTRUE)
{
return osErrorOS;
}
portENDSWITCHINGISR(taskWoken);
}
else if (xSemaphoreTake(semaphoreid, ticks) != pdTRUE)
{
return osErrorOS;
}
~~~~
It looks like
inHandlerMode()
returns true if the function is called from an ISR?
Where did you get your NetworkInterface.c from? Does that contain the above code?
stm32f7, vPortRaiseBASEPRI
NetworkInterface.c I didnt have this file.
~~~
int32t osSemaphoreWait (osSemaphoreId semaphoreid, uint32t millisec)
{
TickTypet ticks;
portBASE_TYPE taskWoken = pdFALSE;
if (semaphore_id == NULL) {
return osErrorParameter;
}
ticks = 0;
if (millisec == osWaitForever) {
ticks = portMAXDELAY;
}
else if (millisec != 0) {
ticks = millisec / portTICKPERIOD_MS;
if (ticks == 0) {
ticks = 1;
}
}
if (inHandlerMode()) {
if (xSemaphoreTakeFromISR(semaphoreid, &taskWoken) != pdTRUE) {
return osErrorOS;
}
portENDSWITCHINGISR(taskWoken);
}
else if (xSemaphoreTake(semaphoreid, ticks) != pdTRUE) { return osErrorOS; } return osOK; } ~~~ This is whole function. It is in cmsis_os.c
else if (xSemaphoreTake(semaphoreid, ticks) != pdTRUE) { return osErrorOS; } return osOK; } ~~~ This is whole function. It is in cmsis_os.c
stm32f7, vPortRaiseBASEPRI
There is a pre-configured STM32 Ethernet example here:
http://www.freertos.org/FreeRTOS-Plus/FreeRTOSPlusTCP/TCP-IPFATExamplesSTSTM32F407.html
stm32f7, vPortRaiseBASEPRI
This is whole function. It is in cmsis_os.cThis is not a file that is provided in the official FreeRTOS distribution. I think it is the CMSIS wrapper provided by ST.
stm32f7, vPortRaiseBASEPRI
Thank you, I’ll asked ST for more information