NXP MCU 技术论坛
直播中

laisvl

8年用户 1018经验值
私信 关注
[问答]

如何为GPIO、ADC、eDMA等每个中断分配优先级?

我正在为 FRDM-K66F 板的事件使用 freeRTOS 示例代码。在那里,我为带有 PortA 中断的开关 SW3 添加了一个 ISR 例程。中断例程如下。
void BOARD_SW_IRQ_HANDLER(void)
{
/* 清除外部中断标志。*/
GPIO_PortClearInterruptFlags(BOARD_SW_GPIO, 1U << BOARD_SW_GPIO_PIN);
BaseType_t xHigherPriorityTaskWoken, xResult;
/* xHigherPriorityTaskWoken 必须初始化为 pdFALSE。*/
xHigherPriorityTaskWoken = pdFALSE;
/* 在 event_group 中设置位 0。*/
xResult = xEventGroupSetBitsFromISR(
event_group, /* 正在更新的事件组。 */
B0, /* 正在设置的位。 */
&xHigherPriorityTaskWoken );
/* 消息是否发布成功?*/
if( xResult != pdFAIL )
{
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
SDK_ISR_EXIT_BARRIER;
}

每当我使用诸如“FromISR”之类的 ISR 安全例程时,程序就会停止运行。但是,当我尝试使用全局变量进行通信以中断一切时,一切正常。
我浏览了页面。通读页面后,我仍然不确定应该为 configMAX_SYSCALL_INTERRUPT_PRIORITY 分配什么编号。默认情况下,最大数字 0xF0 分配给“configKERNEL_INTERRUPT_PRIORITY”
此外,我不知道如何为GPIO、ADC、eDMA等每个中断分配优先级。
你能帮我解决这个问题吗?

更多回帖

发帖
×
20
完善资料,
赚取积分