原创 ADI DSP基础教程:BF533/BF531的GPIO和中断(下)

2017-5-8 10:07 3370 10 10 分类: 处理器与DSP

接上一篇,继续来整Blackfin的IO跟中断!


BF533的GPIO视频教程优酷链接:http://v.youku.com/v_show/id_XMjg2OTIwNDQw.html


@mbb_embed_youku


ADSP-BF53x 的16 个PF 接口都可以做为外部中断来使用。要使用PF 的外部中断,需要为PF 脚选择一个中断源,设置中断触发方式,为中断设置一个中断优先级,并且使能中断。

FIO_MASKA_D 和FIO_MASKB_D:用来为PF 管脚设置中断源,ADSP-BF53x 共有PFA 和PFB 两个中断源,通过选择配置这两个寄存器,使用不同的中断源。

SIC_IARx:设置中断优先等级。每个中断源都有一个默认的优先等级,如不对该寄存器配置,则可以使用默认的中断优先等级配置中断源。


从表中可以看出 PF 管脚相关的中断源PFA 和PFB 位于SIC_IAR2,其默认配置值都为5,根据其配置值,通过下表获知其对应的中断等级为IVG12,如将SIC_IAR2 配置值改为下表中的数值,则中断等级变为该数值对应的中断等级。


2


SIC_IMASK:中断屏蔽寄存器,使能中断使用。

函数:register_handler(ik_ivg12, FlagA_ISR);

中断等级注册函数,该函数在头文件“exception.h”中定义,定义该头文件后直接可以使用,其功能是告知中断管理器定义的中断标识符为FlagA_ISR 和中断等级为12 级。

EX_INTERRUPT_HANDLER(FlagA_ISR);

中断函数,该函数在头文件“exception.h”中定义,当触发中断后,会进入该函数执行。


接口寄存器说明:

SIC_IARx:中断等级设置寄存器

SIC_IMASK:中断屏蔽寄存器


例子代码分析:


PF 口设置使用外部中断:

pFIO_INEN |= PF0|PF1; //设置PF0,PF1 输入使能

pFIO_DIR &=~(PF0|PF1); //设置PF0,PF1 为输入接口

pFIO_EDGE |= PF0|PF1; //设置为沿触发

pFIO_MASKA_D |= PF0|PF1; //使用中断源为PFA,使能PF 外部中断


配置外部中断:

pSIC_IAR0 = 0xffffffff;

pSIC_IAR1 = 0xffffffff;

pSIC_IAR2 = 0xffff5fff; //设置中断等级参数为5

register_handler(ik_ivg12, FlagA_ISR); //告知中断管理器使用中断等级为12,中断标志为 FlagA_ISR

pSIC_IMASK = 0x00080000; //使能外部中断


中断函数:

EX_INTERRUPT_HANDLER(FlagA_ISR) //设置中断函数标志为FlagA_ISR

{

if(pFIO_FLAG_D == PF0) //判断是否为PF0 中断

{

printf("interrupt is PF0!\n");

}

else if(
pFIO_FLAG_D == PF1) //判断是否为PF1 中断

{

printf("interrupt is PF1!\n");

}

*pFIO_FLAG_C = PF0|PF1; //清除中断标志

}


代码实现了通过 PF0 和PF1 接口作为外部中断信号触发管脚,当有下降沿出发时进入中断函数,在中断函数中判断是哪一个PF 脚设置了中断,打印出中断PF 脚信息。运行代码后,利用接地的导线触发 PF0 和PF1 管脚,会进入相应的中断,打印出中断信息。



任何ADI DSP的问题,均可联系OP的QQ:5516164,微信:OpenADSP
OP的网站:www.openadsp.com
OP的论坛:www.openadsp.com/bbs
OP的官方淘宝店:https://shop108086345.taobao.com/
ADI DSP中文资料全集(含视频教程和源码)的淘宝链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.12.Ck3v8f&id=39935721554

文章评论0条评论)

登录后参与讨论
相关推荐阅读
sale_992263015 2017-12-27 09:45
CCES软件开发从0开始(1)
    2017年即将结束,全新的2018年马上开启,OP决定在新的一年里,把ADI的这个新软件CCES玩个通透!    我有几乎所有ADI DSP的开发板,以及成堆的仿真器和软件硬件开发资料,这个不...
sale_992263015 2017-05-08 16:45
Blackfin的最优质型号:BF531/BF532/BF533
上一篇简单的列了一下ADI的DSP,其实ADI处理器家族还有一些比较非主流、冷僻或者比较新的系列没有提到,比如工业和军工里用到的21xx系列,音频专用的SigmaDSP系列,ARM和单片机内核的ADu...
sale_992263015 2017-05-08 12:56
818 ADI公司的DSP发展历程-所有型号一一道来
ADI,美国模拟器件公司,现在国内叫亚德诺半导体(台湾人取的奇葩名)。 它的DSP,我记得是从SHARC开始的,一个非常纯碎的浮点DSP内核,2106X,2116X,2126X,218X等等,这些被统...
sale_992263015 2017-05-08 09:58
ADI DSP基础教程:BF533/BF531的GPIO和中断详解(上)
Blackfin 系列处理器的初学教程很少,很多初学者不知如何来上手这款DSP。为方便初学者更快的学会使用DSP,成为DSP 高手,本章节将详细介绍DSP 的接口使用,以最基础的示例来诠释Blackf...
sale_992263015 2017-05-05 11:18
ADI DSP基础教程:Blackfin的内核之MSASHIFTER(BF533为例)
BARREL-SHIFTER,看图说话! Overview: The shifter performs bitwise shifting for 16-bit, 32-bit or 40-bit i...
我要评论
0
10
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /3 下一条