This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432 单片机组优先级函数的使用

Other Parts Discussed in Thread: MSP432WARE

请教TI工程师

      关于组优先级函数 Interrupt_setPriorityGrouping(uint32_t bits) 如何使用,有无样例,其中这个uint32_t bits如何填写

      如果针对有12个最优的中断  我需要分3组  具体大约如何实施写,谢谢。

      如果小于等于8个中断  我直接用 下面的函数了,

Interrupt_setPriority(uint32_t interruptNumber, uint8_t priority)
priority:优先级别,例如0x00, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xC0, 0xE0

但是现在实际是12个  因此需要分组,Interrupt_setPriorityGrouping(uint32_t bits) 如何使用  请指教

  • 你可以定位到这个函数的头文件对应的c文件,里面在函数原型的前面有对参数的说明
  • 也可以设置同一个优先级,也可以不修改,使用默认的。这个12种中断都需要优先级设置吗
  • 你用的这个是老版本的msp432ware里的库函数。最新的是simplelink_msp432的SDK,名字好像跟以前的不同了,具体看你选择的哪个型号。
    分组这个官方没有提供例子,至少我没有找到。根据头文件里的描述,应该跟STM32那种优先级分组是类似的。
  • 是的,目前没有这方面的例程

    您可以在下面的链接找到函数原型

    void Interrupt_setPriorityGrouping ( uint32_t bits )

    Sets the priority grouping of the interrupt controller.

    Parameters
    bits specifies the number of bits of preemptable priority.

    This function specifies the split between preemptable priority levels and sub-priority levels in the interrupt priority specification. The range of the grouping values are dependent upon the hardware implementation; on the MSP432 family, three bits are available for hardware interrupt prioritization and therefore priority grouping values of three through seven have the same effect.

    Returns
    None.

    dev.ti.com/.../group__interrupt__api.html

    首先,对MSP32中断进行分组,组0~7(3到7是相同的)。同时,对每个中断设置一个抢占优先级和一个子优先级值。 分组配置是在寄存器AIRCR中配置。

    高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。若是抢占优先级相同,则高的子优先级不可以打断低子优先级的中断。如果两个中断的抢占优先级和子优先级都是一样的话,则按照中断发生的时间来执行