This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

What is the execution priority inside WFI for CortexM4?

Hi,

We always have the following code to make sure that only the interrupts with higher priority than 0x20 will wake up the processor.

PRIMASK = 1

BASEPRI = 0x20

do sth...

WFI()

do sth...

PRIMASK = 0

But I think if we’re in the critical section (PRIMASK==1) and even call 'BASEPRI=0x20’, the execution priority, which is the final boosted priority, at this moment should be 0 but not 0x20 refer to the below snapshot from <DDI0403E_d_armv7m_arm>. 

Hence I’m confused why other interrupts could take the processor out of WFI as the highest priority of them is 0, which is the same as the current priority?

Please kindly correct me if my understanding is wrong.

Best regards,

Jayden

Parents
  • Hi Bastian,

    Actually, I don't know so I create this thread to ask for help.

    I could find similar scenarios as the code with google, but they focus on whether the ISR will be executed but not the execution priority. 

    For the 'Note' part in the text segment you provided, it also makes me confused when I read the document. How does the processor ignore the PRIMASK as needing it to determine whether an exception would preempt any current active exceptions?

    And I could find this design on many vendors, so maybe not an IMPLEMENTATION DEFINED?

Reply
  • Hi Bastian,

    Actually, I don't know so I create this thread to ask for help.

    I could find similar scenarios as the code with google, but they focus on whether the ISR will be executed but not the execution priority. 

    For the 'Note' part in the text segment you provided, it also makes me confused when I read the document. How does the processor ignore the PRIMASK as needing it to determine whether an exception would preempt any current active exceptions?

    And I could find this design on many vendors, so maybe not an IMPLEMENTATION DEFINED?

Children