更新时间:2021-07-08 GMT+08:00
编程实例
实例描述
本实例实现如下功能:
- 创建中断。
- 设置中断亲和性。
- 使能中断。
- 触发中断。
- 屏蔽中断。
- 删除中断。
编程示例
前提条件:menuconfig菜单中配置中断使用最大数、配置可设置的中断优先级个数。
代码实现如下:
#include "los_hwi.h" #include "los_typedef.h" #include "los_task.h" STATIC VOID HwiUsrIrq(VOID) { printf("\n in the func HwiUsrIrq \n"); } /* cpu0 trigger, cpu0 response */ UINT32 It_Hwi_001(VOID) { UINT32 ret; UINT32 irqNum = 26; /* ppi */ UINT32 irqPri = 0x3; ret = LOS_HwiCreate(irqNum, irqPri, 0, (HWI_PROC_FUNC)HwiUsrIrq, 0); if (ret != LOS_OK) { return LOS_NOK; } #ifdef LOSCFG_KERNEL_SMP ret = LOS_HwiSetAffinity(irqNum, CPUID_TO_AFFI_MASK(ArchCurrCpuid())); if (ret != LOS_OK) { return LOS_NOK; } #endif ret = LOS_HwiEnable(irqNum); if (ret != LOS_OK) { return LOS_NOK; } ret = LOS_HwiTrigger(irqNum); if (ret != LOS_OK) { return LOS_NOK; } LOS_TaskDelay(1); ret = LOS_HwiDisable(irqNum); if (ret != LOS_OK) { return LOS_NOK; } ret = LOS_HwiDelete(irqNum, NULL); if (ret != LOS_OK) { return LOS_NOK; } return LOS_OK; }
完整实例
父主题: 中断