龙芯OpenHarmony课程 【4】 按键中断

连志安
发布于 2021-12-15 18:12
浏览
1收藏

龙芯1C300已经移植了OpenHarmony轻量系统,可以见这个文章
首发!成功移植OpenHarmony到龙芯开发板

本文可以供大家参考

1 按键中断线程

按键中断相关代码位于device\loongson\ls1c300b_hrst\test\sample_key_irq.c文件中。
首先create_key_irq_task 创建一个线程,该线程为 key_irq_task 。
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区

2 按键中断线程

key_irq_task 中断线程代码如下,基本都有注释后面我们重点看下中断设置部分的代码。
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区
按键中断处理函数
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区

3 龙芯1c300中断

龙芯1c的中断分为五组,每组32个,相关中断号可以在
device\loongson\ls1c300b_hrst\src\lib\ls1c_irq.h 文件中查看,所有中断号如下:
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区

其中,GPIO的中断是从 64开始的
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区
也就是说,如果我们的GPIO口是10,那么对应的中断号是 64+10 ,所以需要使用 LS1C_GPIO_TO_IRQ 函数将GPIO口号转换成中断号,相关宏如下:
龙芯OpenHarmony课程 【4】 按键中断-鸿蒙开发者社区

4 OpenHarmony中断API

OpenHarmony提供统一的中断管理,开发者可以调用 HalHwiCreate 函数进行中断使能,该函数原型如下:

LITE_OS_SEC_TEXT_INIT UINT32 HalHwiCreate(HWI_HANDLE_T hwiNum,
                                          HWI_PRIOR_T hwiPrio,
                                          HWI_MODE_T mode,
                                          HWI_PROC_FUNC handler,
                                          HWI_ARG_T arg)
  描述:创建硬件中断
  参数:		hwiNum --- 要创建的 hwi num
                hwiPrio --- hwi 的优先级,目前1c300未使用,直接填0即可
                mode --- 未使用
                handler --- hwi 处理程序
                arg --- hwi 处理程序的参数
  返回:成功时为 LOS_OK,失败时为错误代码

2
收藏 1
回复
举报
回复
    相关推荐