MSP432 Memory Address 0x40004c04

109 Views Asked by At

I am creating an RTOS kernel using a MSP432. This may be a loaded question but my PendSV Handler is not getting called. I use the memory address 0xE000ED04 and the first time around the value of 0xE000ED04 is "E000 1000" which this calls the PendSV Handler correctly. The second time around the memory address 0xE000ED04 has the value "E80E 1000". I read that this is not correct but I am not sure how to fix this.

if(OS_next != OS_curr){
     // Pend a PendSV exception using by writing 1 to PENDSVSET at bit 28
    *(uint32_t volatile *) 0xE000ED04 |= (0x1U << 28); //0x10000000; //
    //asm("isb");

This is the code I used for triggering PendSV. I have been on this problem for a week or so now. I will provide extra code if needed I just don't want to clutter the question. I am using a Systick Timer as well that has the priority 0U and I set the PendSV priority using NVIC_SetPriority( PendSV_IRQn, 0xFF) ;.

Another problem is when I step through the code and I get this "Break at address "0x40004c04" with no debug information available, or outside of program code."

Now address "0x40004c04" is the for P1_P1DIR, PA_PADIR and has a value FF41. I tried searching for this but I could not find it and I am not sure if this could be an issue. I can't think this could be an issue since about the output pins.

I have been stuck and I need help this is supposed to be my senior project and I can't figure this out. Thank you all. I can provide additional code.

0

There are 0 best solutions below