ADI Blackfin DSP处理器-BF533的开发详解18:用触摸屏的例程来理解中断(含源码)

news2025/1/11 17:04:07

硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

在这里插入图片描述

硬件实现原理

ADSP-EDU-BF533 开发板上的中断资源连接到了 CPLD,并通过 CPLD 将中断信号连接到 PF0 触发,通过 CPLD映射的寄存器读取中断源数据。

中断功能映射到 CPLD 寄存器中的 DEVICE_OE 和 INTERRUPT_DAT 两个寄存器,其映射内容如下:

DEVICE_OE 寄存器(读/写):
DEVICE_OE 寄存器地址:0x20320000
DEVICE_OE 寄存器设置硬件设备上一些控制管脚的电平状态。
DEVICE_OE 寄存器位功能:

在这里插入图片描述

PF0_SET:PF0 模拟 IIC 总线 SCL 接口或 PF0 中断功能使能

1:关闭 I2C_SCL 输入信号, 使能 PF0 中断信号
0:使能 I2C_SCL 输入信号,关闭 PF0 中断信号

使用中断时,将 I2C_SCL 位设置为1。
INTERRUPT_DAT 寄存器(读唯一):
INTERRUPT_DAT 寄存器地址:0x20360000

INTERRUPT_DAT 寄存器是板卡上所有中断资源的中断源数据寄存器,可以通过该寄存器数据判断出当前中断是哪一个设备产生的。

INTERRUPT_DAT 寄存器位功能:

在这里插入图片描述

当中断未触发时,读取的 Bit 位值为 1,当中断触发时,读取的 Bit 位值为 0,根据 Bit 位数据,获取中断设备。

SD_INF 为 SD 卡插入查询位,该 bit 位不会触发中断,只能通过读取该寄存器来查询 SD 卡否插入。

硬件连接示意图

在这里插入图片描述

代码实现功能

代码实现了利用板卡的中断机制,当有中断触发时,PF0脚产生中断,然后进入中断函数,通过INTERRUPT_DAT寄存器查询触发中断的中断源,并打印中断源信息。

调试步骤

  1. 将仿真器(ICE)与 ADSP-EDU-BF53x 开发板和计算机连接好。
  2. 先给 ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
  3. 运行 VisualDSP++ 5.0 软件,选择合适的 BF533 的 session 将仿真器与软件连接。
  4. 加载 VisualDSP++ 5.0 工程文件 BF53x_INTERRUPT.dpj,编译并全速运行。
  5. 点击触摸屏或者按按键测试中断触发。

测试结果

点击触摸屏或者按按键测试中断触发,代码打印出触发中断的中断源。

在这里插入图片描述

未插入 SD 卡和插入 SD 卡中断信息比较。

程序源码

#include <cdefBF533.h>
#include <sys\exception.h>
#include “cpld.h”

EX_INTERRUPT_HANDLER(FlagA_ISR);

void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Init_Flags(void)
{
*pFIO_INEN = 0x0001;
*pFIO_DIR = 0x0000;
*pFIO_EDGE = 0x0001;
*pFIO_POLAR = 0x0001;
*pFIO_MASKA_D = 0x0001;
}

void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff;
*pSIC_IAR2 = 0xffff5fff;

register_handler(ik_ivg12, FlagA_ISR);		
*pSIC_IMASK = 0x00080000;

}

EX_INTERRUPT_HANDLER(FlagA_ISR)
{
unsigned char interrupt=0;

interrupt = (~*pINTERRUPT_DAT&0x7f);	
if(interrupt&KEY_INT)
	printf("The interrupt is keyboard!\n\r");
if(interrupt&TOUCH_INT)
 	printf("The interrupt is touch interrupt!\n\r");	
if(interrupt&TOUCH_BUSY)
	printf("The interrupt is touch busy!\n\r"); 	
if(interrupt&LAN_IOWAIT)
	printf("The interrupt is lan iowait!\n\r");
if(interrupt&LAN_INT)
	printf("The interrupt is lan interrupt!\n\r");
if(interrupt&SD_INF)
	printf("SDCard inserted\n\r");
if(interrupt&EXT_IO_INT)
	printf("The interrupt is extend IO interrupt\n\r"); 		
*pFIO_FLAG_C = 0x0001;	

}

void main(void)
{
Set_PLL(16,4);
Init_EBIU();
ExtIO_Interrupt_Enable();
Interrupt_Enable();
Init_Flags();
Init_Interrupts();
while(1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu交叉编译(armv7_32位)onnx源码_cpu版本

1 下载onnx git clone https://github.com/microsoft/onnxruntime cd onnxruntime git submodule update --init --recursive2 编译 由于是交叉编译&#xff0c;所以需要设置一下编译工具&#xff0c;在网上搜索看到了这个 chineseocr_lite/build-onnxruntime-android.sh a…

Jmeter(一):jmeter概述与工作原理,安装与基本配置介绍

Jmeter(1)&#xff1a;jmeter概述与工作原理 jmeter概述与工作原理 JMeter 是 Apache 基金会 Jakarta 上的一个纯 Java 开源项目&#xff0c;起初用于基 于 Web 的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输 FTP, 大型数据…

基于JavaWeb+JSP的校园二手交易平台(源码+数据库+说明文档)

目录 一、前后端功能模块 1.用户web前端页面功能模块 2.后台信息管理模块 二、开发环境 三、开发技术 四、页面设计 1.登录注册界面 2.网页主页界面 3.商品列表界面 4.商品详情界面 5.支付页面 6.支付成功后页面 7.我的订单页面 ​8.个人已发布与待处理订单界面…

google外链重要性高吗?谷歌外链作用大不大

google外链重要性高吗&#xff1f; 答案是&#xff1a;非常重要&#xff0c;而且要注重建设付费GPB外链。 要相信有价值的外链一般都比较难获取&#xff0c;那种高流量的外链一般要靠自己去outreach, 但是成功率比较低&#xff0c;我们需要用金钱和优质外链资源去交换 做高质…

程序员的浪费,Python一对一还原《点燃我,温暖你》里面比较火的那个爱心代码 | 附源码

前言 包子们&#xff0c;上午好 最近有个剧挺火的 就是那个程序员的剧&#xff0c;叫《点燃我&#xff0c;温暖你》 最近听说很火呀&#xff0c;那作为程序员&#xff0c;Python中的战斗机的小编&#xff0c;能不给大家安排一波&#xff01; 怎么说呢&#xff0c;用这个表白也…

我凭借这 1000 道 java 真题,顺利拿下京东、饿了么、阿里大厂 offer

今天这篇文章也算是一次面试总结了吧&#xff01; 毕竟金九银十过去了&#xff0c;总得给大家来点东西交代交代&#xff01; 所以今天&#xff0c;这篇文章就应运而生了&#xff0c;给大家来点正正经经的干货教学&#xff0c;让大家体验一下干货的魅力&#xff01; 小编今天这里…

【C语言数据结构(基础篇)】第一站:时间复杂度与空间复杂度

目录 一、什么是时间复杂度和空间复杂度 1.算法效率 2.时间复杂度的概念 3.空间复杂度的概念 二、如何计算常见的时间复杂度 1.大O的渐进表示法 2.一些时间复杂度的例子 &#xff08;1&#xff09;例1 &#xff08;2&#xff09;例2 (3)例3 (4)例4 &#xff08;5&a…

【计算机视觉+自动驾驶】二、多任务深度学习网络并联式、级联式构建详细讲解(图像解释 超详细必看)

觉得有帮助麻烦点赞关注收藏~~~ 一、多任务网络的主要分类 目前建立的多任务网络可以分为两种方法&#xff0c;一种为并联多任务网络结构&#xff0c;另一种为级联多任务网络结构&#xff0c;两种网络构建方式分别如下图所示 并联式 级联式 并联网络结构大多为共享基础网络而…

ADI Blackfin DSP处理器-BF533的开发详解14:LED跑马灯(含源代码)

接口讲完了&#xff0c;下面写点应用程序&#xff0c;GPIO最典型的应用&#xff0c;LED跑马灯。 硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 *硬件实现原理 ADSP-EDU-BF533开发板上共设计了…

2005-2020年全国31省劳动力市场分割指数

2005-2020年全国31省劳动力市场分割指数 1、时间&#xff1a;2005-2020年 2、范围&#xff1a;包括全国31省&#xff0c; 3、数据内容&#xff1a;数据存在缺失&#xff0c;下载链接界面有数据预览&#xff0c;具体缺失情况参看链接内数据预览&#xff0c; 内含原始数据、A…

把废旧监控改无人机遥控车红外远程摄像头

像我们这些精打细算的业余玩家&#xff0c;淘个新宝贝都要掂量掂量。很羡慕能买到专用红外摄像头配无人机。可是手头不宽裕&#xff0c;只有一些旧零件。这都是废物再利用&#xff0c;所以说不要太追求性能了&#xff0c;自然让他工作就好&#xff0c;测试这条路线的可行性。 …

blneder 蜡笔

文章目录简介.打开蜡笔.基本操作.自由线.图形工具.图层.遮罩.画布.画布原点.![在这里插入图片描述](https://img-blog.csdnimg.cn/46cb7019e8ff41e6b391e056c616ce32.png)画布旋转.辅助.圆形.径向.平行.栅格.等距.编辑模式.顶部工具栏.选择.曲线编辑.左侧工具栏.快捷键.画笔深度…

值得一看的Linux内核—中断下半部之软中断

软中断 软中断&#xff08;softirq&#xff09;是中断处理程序在开启中断的情况下执行的部分&#xff0c;可以被硬中断抢占。 内核定义了一张软中断向量表&#xff0c;每种软中断有一个唯一的编号&#xff0c;对应一个softirq_action实例&#xff0c;softirq_action实例的成员…

b站黑马JavaScript的Node.js案例代码——考试成绩整理案例

目录 目标效果&#xff1a; 重点原理&#xff1a; 1.js中split方法——转换字符串为数组 2.js中forEach方法——遍历数组中每个对象 3.js数组操作中push方法——添加1/多个元素去数组的末尾 4.js数组操作中replace方法——在字符串中用一些字符替换另一些字符 5.js数组操…

ATtiny13与Proteus仿真-8位通用定时器/计数器与PWM仿真

8位通用定时器/计数器与PWM 1、8位通用定时器介绍 ATtiny13的8位通用定时器/计数器有两个独立的输出比较单元,并支持PWM。这意味着,可以通过8位通用定时器/计数器生产PWM信号。关于PWM的介绍,在这里就展开介绍,请参考相关资料。 ATtiny13的8位通用定时器/计数器具有如下…

备战一年,终于斩获腾讯T3,老子一定有美好的未来...

我就是那个从25岁躺平&#xff0c;30岁开始醒悟的“中年秃头大叔”&#xff0c;这人一到了中年&#xff0c;思考问题的方向确实不一样了。以前我不想结婚不想养育后代&#xff0c;天天公司摸鱼&#xff0c;总觉得自己赚钱自己花就挺好&#xff0c;25岁赚一万&#xff0c;30岁还…

[ 数据结构 ] 排序算法--------七大内排,看完还不会写来揍我

0 前言 1.1 排序分类 内部排序和外部排序,前者数据加载到内存,后者数据量大需借助外部文件. 内部排序包含: 插入排序:直接插入排序,希尔排序 选择排序:简单选择排序,堆排序 交换排序:冒泡排序,快速排序 归并排序 基数排序 1.2 复杂度 1)度量一个程序时间有两种方法,事后统…

tp3.2实现websocket

首先从单服务器实现开始 我的系统是centos系统&#xff0c;lnmp搭建的环境&#xff0c;php5.6 1&#xff1a;首先检查环境是否支持 curl -Ss http://www.workerman.net/check.php | php PHP Version > 5.3.3 [OK] Extension pcntl check [OK] Extension posix check [OK] 2.…

Metal每日分享,均值模糊滤镜效果

本案例的目的是理解如何用Metal实现均值模糊效果滤镜&#xff0c;均值模糊原理其实很简单通过多个纹理叠加&#xff0c;每个纹理偏移量设置不同达到一点重影效果来实现模糊; Demo HarbethDemo地址 实操代码 // 均值模糊效果滤镜 let filter C7MeanBlur.init(radius: 0.5)//…

清除浏览器缓存

清除浏览器的缓存知识调用前言引入具体操作知识调用 文章中可能用到的知识点前端学习&#xff1a;浏览器缓存方式有哪些&#xff08;http协议 websql indexDB cookie localstorage sessionstorage&#xff09;如何查看Chrome浏览器的页面缓存内容【详细教程】 前言引入 上期文…