5440|3

274

帖子

8

TA的资源

纯净的硅(初级)

楼主
 

【沁恒RISC-V内核 CH582】3- IO外部中断的使用 [复制链接]

 

CH582的中断也有一个中断控制器,缩写是PFIC。应该和ARM里的NVIC有点相似,管理中断的优先级和使能。

本次只用最基本的外部中断功能。使用按键触发中断,控制LED等的翻转。

包括2个部分:

  1. 中断源的设置
  2. 中断函数的编写

中断源的设置

同ARM一样,中断源的使能是由2部分共同控制的:外设本身和中断管理器。

IO输入端口的中断设置

GPIOB_ModeCfg(GPIO_Pin_4,GPIO_ModeIN_PU);
GPIOB_ITModeCfg(GPIO_Pin_4,GPIO_ITMode_RiseEdge);

首先将IO设置成输入模式,然后配置中断类型,可配置的类型包括:高电平、低电平、上升沿和下降沿。

PFIC中断控制器的设置

PFIC_EnableIRQ(GPIO_B_IRQn);

上面这个函数出现在"core_riscv.h"文件中,这个文件里类似于ARM里的"cm3.h"那个头文件。包括了全局中断的使能和关闭,中断优先级的设置,快速中断设置,重启等指令。

中断函数的编写

我是参考工程中uart的中断函数写的,其中断函数的上部有2个预编译指令(见下面的两行指令)不清楚是做什么用的,百度了一下,大概是为了在编译的时候把中断统一放在某个代码区里。

__INTERRUPT
__HIGH_CODE

按键触发中断翻转LED的中断函数如下:

__INTERRUPT
__HIGH_CODE
void GPIOB_IRQHandler()
{
    if(GPIOB_ReadITFlagBit(GPIO_Pin_4) != 0){
        GPIOB_InverseBits(GPIO_Pin_19);
        GPIOB_ClearITFlagBit(GPIO_Pin_4);
    }
}

中断函数的函数名可以在"startup_CH583.S"里找到。

一些疑问

  1. __INTERRUPT__HIGH_CODE的作用还不知道。
  2. 手册中提到了 ,对这个不是很理解,手册上也没有细说。猜测可能是有4个可配置的通道,能够连接其它的中断源,然后能够更快速的跳转到中断执行函数里。

手册写的有些简单,而且例程上也没有体现中断的用法。这个希望后期官方能够补充一下。

 

最新回复

_HIGH_CODE是将代码放到RAM里去跑,速度会大大提高,所以我们的例程中关于中断就会这么写,gpio中断在BLE目录下的PM中有使用gpio中断唤醒,可参考。 —INTERRUPT是必须得有的,他可以提醒编译器这是中断服务函数,另外还可以提醒编译器硬件压栈已经开启,不需要开启软件压栈。   详情 回复 发表于 2022-3-8 10:04
点赞 关注(1)
 
 

回复
举报

6842

帖子

11

TA的资源

版主

沙发
 
楼主很有思想,我就没有想到这么,能用就好,顶你一个!
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

_HIGH_CODE是将代码放到RAM里去跑,速度会大大提高,所以我们的例程中关于中断就会这么写,gpio中断在BLE目录下的PM中有使用gpio中断唤醒,可参考。

—INTERRUPT是必须得有的,他可以提醒编译器这是中断服务函数,另外还可以提醒编译器硬件压栈已经开启,不需要开启软件压栈。

点评

感谢解惑  详情 回复 发表于 2022-3-8 15:47
 
 
 

回复

274

帖子

8

TA的资源

纯净的硅(初级)

4
 
WCH_Risc5 发表于 2022-3-8 10:04 _HIGH_CODE是将代码放到RAM里去跑,速度会大大提高,所以我们的例程中关于中断就会这么写,gpio中断在BLE目 ...

感谢解惑

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表