C6455基于BIOS的GPIO中断配置说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C6455下基于BIOS的GPIO中断配置之前在非BIOS下利用CSL库函数配置GPIO中断成功,后来由于工作需要,得在BIOS 下使用Event事件来触发,于是开始了漫漫长路的征程。

经过一番努力,终于取得成果,现在和大家一起分享一下。

主函数中的外设接口的初始化就不多说了,直奔主题开始配置GPIO。

1.初始化GPIO;
void IntiGPIO(void)
{
GPIO_PERLOCK = GPIO_PERLOCK_Value;
GPIO_PERCFG0 = GPIO_PERCFG0_Value; //Set GPIO to enabled mode
//然后修改GPIO控制寄存器
GPIO_BINTEN = GPIO_BINTEN_Value; //打开GPIO中断功能
GPIO_DIR = GPIO_DIR_Value; //GP4、GP5、GP6、GP7 pin configured as input pin
GPIO_CLR_DATA = GPIO_CLR_DATA_Value;
//GPINT4、GPINT5、GPINT6、GPINT7 interrupt and EDMA event is triggered on rising edge//
GPIO_CLR_RIS_TRIG = GPIO_CLR_RIS_TRIG_Value;
GPIO_SET_RIS_TRIG = GPIO_SET_RIS_TRIG_Value;
//GPIO_CLR_FAL_TRIG = GPIO_CLR_FAL_TRIG_Value;
//GPIO_SET_FAL_TRIG = GPIO_SET_FAL_TRIG_Value;
GPIO_EVTCLR1 = GPIO_EVTCLR1_Value; //Event Clear Register 1
GPIO_EVTSET1 = GPIO_EVTSET1_Value;
GPIO_INTMUX1 = GPIO_INTMUX1_Value; //Interrupt Multiplexor Register 1
CSR = 0x10002503;
IER = 0x000000f3; //Reset interrupt enable, NMIE Enable, IE4,IE5,IE6,IE7 Enable
}
GPIO里面的寄存器均是自己设置的地址,并根据手册自己配置。

其中CSR和IER属于全局中断寄存器,所以是没有地址的,通过extern cregister voilatile unsign int CSR或IER来定义。

当初找两个寄存器的时候几乎把手册翻遍了也没有找到,最后还是论坛中的朋友给了帮助,在此非常感谢sasa188朋友。

2.新建BIOS,在图形配置文件中选择HWI-Hardware Interrupt Service Routine Manager,选择HWI_INT4,右键它,点“Properties”,打开属性编辑框。

3.其次,在"Genral"选项中的“interrupt selection number ”中输入1,(因为GPINT4事件号是55,属于Event1),点击“应用”,这时"function"中会自动生成"_ECM_dispatch"。

点“确
定”退出属性设置。

4.选择“ECM-Event Combiner Manager”,点右键“Properties”,选择属性框中"Enable event combiner manager"中的复选框
5.在源文件中编写FPGA_UNPRO_BLOCK_intr中断服务程序。

(目前只测试能否进入中断,并且响应多少下)。

另一个中断使用GPINT5事件号是56,按照上述方法进行设置完成后,也编FPGA_UNPRO_FRAME_intr中断服务程序。

最后测试帧中断和块中断两者之间的数量关系是否对应。

void FPGA_UNPRO_BLOCK_intr()
{
BLOCK_unprointr_cnt++;
}
void FPGA_UNPRO_FRAME_intr()
{
FRAME_unprointr_cnt++;
if(FRAME_unprointr_cnt == 10)
{
BLOCK_unprointr_cnt = 0;
}
}
6.在EVENT55中点右键,选择"Properties",打开属性框,在"function"中输入"_
FPGA_UNPRO_BLOCK_intr "."arg"框中输入55(事件号),同时选中"unmask event source“,点确定
7.设置完毕,运行程序,当有中断来的时候即会进入FPGA_UNPRO_BLOCK_intr函数中。

相关文档
最新文档