TS201的外部中断和定时终端控制FLAG输出(含参考源码)

news2024/9/23 5:25:32

硬件准备

ADZS-TS201S-EZLITE:ADI TS201开发板
AD-HP560ICE:ADI DSP专用仿真器

软件准备

Visual DSP++软件

硬件链接

在这里插入图片描述

外部中断控制FLAG输出

原理就不讲了,前面几章都有说。

调试步骤:

1)打开VisualDSP++,并新建一个工程文件,命名为”test3_3”,保存路径选择”D:\DSP\”;

2)新建C语言源程序文件,命名为” IRQ_FLAG.c”,并将文件添加至工程,并理解程序源代码;

3)新建或选择一个相应的调试会话Session (评估测试模式下的调试会话);

4)检查EZ-KIT板各SW设置是否正确;

5)用USB将PC与EZ-KIT板连接;

6)连接EZ-KIT板电源线,LED1(POWER)点亮、LED8(RESET)点亮,EZ-KIT板开始自动复位,复位完成后LED8熄灭,LED3点亮(USB MONITOR,注意此LED实际位置在USB上方),则表示EZ-KIT板与PC已经正常连接。

7)编译工程,在弹出的处理器选择窗口中,选择处理器A作为本次试验的处理器,然后运行程序,观察按下IRQ_A按键前后,LED的亮灭情况。

参考源码

#include<stdio.h>
#include<builtins.h>
#include<sysreg.h>
#include<defts201.h>
#include<signal.h>

void isr_irq0(int dummy);

int main( void )
{
//将FLAG2设为输出模式
__builtin_sysreg_write(__FLAGREGST,FLAGREG_FLAG2_EN);
//允许外部IRQ0
int imaskh=0;
imaskh = __builtin_sysreg_read(__IMASKH);
imaskh |= (1<<INT_IRQ0_P);
__builtin_sysreg_write(__IMASKH, imaskh);
//设置IRQ0中断服务程序
interrupt(SIGIRQ0, isr_irq0);
//设置跳沿触发
__builtin_sysreg_write(__INTCTL,0);
//开全局中断使能
__builtin_sysreg_write(__SQCTLST, SQCTL_GIE);
while(1);
}

void isr_irq0(int signal)
{
static int button=0;
//按键按下进入本中断服务,每次都反转下button状态
button = !button;
if(0==button)
{
__builtin_sysreg_write(__FLAGREGCL,~FLAGREG_FLAG2_OUT);
}
else
{
__builtin_sysreg_write(__FLAGREGST,FLAGREG_FLAG2_OUT);
}
}

定时中断控制FLAG输出

原理:

TS201有两个64位的通用定时器(Timer),Timer0和Timer1,用于定时或计数,两个概念本质上是一样的。设置好Timer的初始值(计数值)并触发Timer运行,计数值会随程序运行而减少,一条指令执行周期将减少2个计数值。

当计数值降低为零时,若使能了Timer中断,将会触发Timer中断,转入相应中断服务程序运行,此时Timer会自动恢复为原来的初始值重新开始计数;若没有使能Timer中断,则程序继续运行,Timer自动恢复为原来的初始值重新开始计数。

Timer中断分为高优先级和低优先级两种,本实验使用高优先级中断。使能中断需要对相应寄存器进行设置,同时将中断服务程序首地址送入中断向量表相应的中断寄存器。这样当中断发生时,程序才会对中断进行响应,转入对应的中断服务程序运行。

有关寄存器的设置可以参照TS201数据手册。

调试步骤:

1)打开VisualDSP++,并新建一个工程文件,命名为”test3_4”,保存路径选择”D:\DSP\”;

2)新建C语言源程序文件,命名为” TIMER_FLAG.c”,并将文件添加至工程,并理解程序源代码;

3)新建或选择一个相应的调试会话Session (评估测试模式下的调试会话);

4)检查EZ-KIT板各SW设置是否正确;

5)用USB将PC与EZ-KIT板连接;

6)连接EZ-KIT板电源线,LED1(POWER)点亮、LED8(RESET)点亮,EZ-KIT板开始自动复位,复位完成后LED8熄灭,LED3点亮(USB MONITOR,注意此LED实际位置在USB上方),则表示EZ-KIT板与PC已经正常连接。

7)编译工程,在弹出的处理器选择窗口中,选择处理器A作为本次试验的处理器,然后运行程序,观察按下IRQ_A按键前后,LED的亮灭情况。

参考源码

#include <builtins.h>
#include <sysreg.h>
#include <defts201.h>

#define RWRITE(reg,value) __builtin_sysreg_write(reg,value)
#define RREAD(reg) __builtin_sysreg_read(reg)

typedef unsigned int uint;

void timer0h_isr(void); //计时器中断
void irq0_isr(void); //IRQ0

uint g_bright=0; //亮度控制

int main( void )
{

int v;
//将FLAG2设为输出模式
RWRITE(__FLAGREGST,FLAGREG_FLAG2_EN);
//设置IRQ0服务程序和计时器中断服务程序
RWRITE(__IVIRQ0,(int)irq0_isr);
RWRITE(__IVTIMER0HP,(int)timer0h_isr);
//设置跳沿触发
//RWRITE(__INTCTL,0);
//允许外部IRQ0和计时器
v=RREAD(__IMASKH);
v|=((1<<INT_IRQ0_P)|(1<<INT_TIMER0H_P));
RWRITE(__IMASKH,v);
//设置计数
RWRITE(__TMRIN0H,0);
RWRITE(__TMRIN0L,50000);
//开全局中断使能
RWRITE(__SQCTLST,SQCTL_GIE);
//启动计时器
RWRITE(__INTCTL,INTCTL_TMR0RN);
while(1);
return 0;
}

#pragma interrupt
void timer0h_isr(void)
{
static uint counter=0;
counter++;
counter&=0x0f;
if(counter>g_bright)
RWRITE(__FLAGREGCL,~FLAGREG_FLAG2_OUT);
else
RWRITE(__FLAGREGST,FLAGREG_FLAG2_OUT);
}

#pragma interrupt
void irq0_isr(void)
{
g_bright=g_bright+4;
g_bright&=0x0f;
}

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

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

相关文章

C语言刷题系列——8.矩阵的行/列互换

&#x1f6a9;矩阵的行/列互换⛄一) 题目要求⛄二) 题解step1:输入矩阵step2:输入k(执行 行/列 互换操作的次数)step3:&#xff08;循环内部&#xff09;行/列互换step4:打印互换后的矩阵⛄三) 最终的实现⛄一) 题目要求 输入描述&#xff1a;第一行包含两个整数n和m&#xff…

基于pytest来演示一个PO测试模式案例

首先要说的是&#xff0c;这是一个很简易的案例&#xff0c;目的在于体会这样一种结构。 第一部分&#xff1a;基本操作 案例描述&#xff1a;启动浏览器--打开好123--点击logo--跳转到百度--输入搜索词汇--点击按钮开始搜索。 模式描述&#xff1a;这个模式把元素的提取、元…

基于Java实现(WEB)影院管理系统(TMS)【100010015】

电影院系统需求规格说明 1. 引言 1.1 目的 本文档描述了影院管理系统的功能需求和非功能需求。开发小组的软件系统实现与验证工作都以此文档为依据。1.2 范围 影院管理系统是为了xx影院开发的业务系统&#xff0c;开发的目标是帮助该影院处理日常的重点事物&#xff0c;包括…

算法基础篇-03-查找(顺序查找和二分法查找)

1.查找 查找&#xff1a;在一些数据元素中&#xff0c;通过一定的方法找出与给定关键字相同的数据元素的过程&#xff1b;列表查找(线性表查找)&#xff1a;从列表中查找指定元素&#xff1b; 输入&#xff1a; 列表&#xff0c;待查找元素输出&#xff1a;元素下标(未找到元素…

【Linux】git的使用

&#x1f922;Linux 关联到gitee的操作记录 &#x1f922;Linux 下下载gitee的库 &#x1f92c;sudo yum install git 在Linux中安装git这个软件 &#x1f92c;git clone 下载gitee库到本地 &#x1f92c;git add. 将代码放到刚才下载好的目录中 &#x1f92c;git commit -…

HTML网上书店静态HTML网页作业作品 大学生三联书店网页设计制作成品 简单DIV CSS布局网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

SpringBoot 如何进行业务校验,老鸟们都这么玩的~

throw new IllegalArgumentException(“用户不存在&#xff01;”); } } 采用Assert能使代码更优雅&#xff0c;更简洁。 还是上面的例子&#xff0c;如果采用Assert可以这样写&#xff1a; public void test2(int accountId) { Account account accountDao.selectById(…

【力扣篇一】数组30题

前言 &#xff08;12月5日&#xff09;突然想起了很久以前别人&#xff08;具体来源已经记不清了&#xff09;传给我的一套题单。网上的题单不少&#xff0c;光收藏可不行&#xff0c;关键还得下手。 这套题单的题目数量为300出头&#xff0c;什么时候刷完我还没有明确计划&a…

对标40亿美金Webflow,「Towify」想用无代码方式搭建小程序

低代码和无代码的浪潮,在全球已经席卷了几次。今年以来,以低代码、无代码方式为主的网页开发、搭建工具受到了资本和市场的认可: 2022年8月,成立于2017年的低代码-内部程序开发平台Retool完成4500万美元融资,投后估值32亿美元。2022年3月,成立于2012年的无代码-外部网页搭…

关于魔趣刷机(含root)步骤

关于魔趣刷机&#xff08;含root&#xff09;步骤准备工作第一步&#xff1a;下载room和TWRP第二步&#xff1a;刷入TWRP到手机第三步&#xff1a;刷入room到手机第四步&#xff1a;安装Magisk app第四步&#xff1a;验证手机是否root参考链接准备工作 一台手机(推荐小米)、TW…

ADI Blackfin DSP处理器-BF533的开发详解28:SD卡的文件系统(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了通过文件系统读取 SD 卡上的文件&#xff0c;并对文件和文件夹做读、写、删除、建立、文件列表、文件搜索等功能&#xff0c…

【Pytorch】第 8 章 :实施政策梯度和政策优化

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Git 客户端::Git Fork 注册版-NEW

Git Fork 是最简单有效的 Windows 客户端之一。许多开发人员正在使用此版本控制程序&#xff0c;它允许您协作处理您的项目。具有类似这样的用户界面的客户端可以使您的工作更轻松。 Fork 的 Fork 界面非常人性化。在右侧的左侧有大量的存储库和分支、标签、来源和藏匿处。此外…

【Pytorch】第 7 章 :深度 Q 网络实战

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

CleanMyMac X4.12.2免费版MAC电脑系统磁盘优化工具

我的 MacBook Pro 只有 256GB 硬盘空间&#xff0c;平时也勉强够用。但最近在升级新版本操作系统 macOS Ventura 13 时发现磁盘空间不够&#xff0c;导致不能升级。对于一个升级强迫症患者来说&#xff0c;任何的小红点都不能忍&#xff0c;更何况是系统升级这种事情。在确定了…

ARM 汇编初始化 SDRAM 详解

一、初始化代码框架介绍&#xff08;函数调用和返回、步骤等&#xff09; SDRAM 初始化使用一个函数 sdram_asm_init &#xff0c;函数在 sdram_init.S 文件中实现&#xff0c;是一个汇编函数。 强调&#xff1a;汇编实现的函数在返回时需要明确使用返回指令&#xff08;mov p…

1561_AURIX_TC275_电源管理以及监控

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 从这个拓扑图中可以看的出来&#xff0c;AD相关部分的供电以及参考电压都是独立的&#xff0c;而且是来自于外部的。 1. LDO相关的模块有EVR33和EVR13. 2. 1.3V的供电之前只知道是一个内核…

win11:clion + cmake + mingw + glfw

clion & cmake 官网下载安装即可 clion的设置 mingw 链接 版本如下&#xff1a; windows系统只考虑选择x86_64-win32-sjlj和x86_64-win32-seh&#xff0c;区别&#xff1a; sjlj支持32位和64位seh只支持64位&#xff0c;比较新 glfw 官网提供下载&#xff1a;源码、…

[附源码]JAVA毕业设计学生公寓管理系统(系统+LW)

[附源码]JAVA毕业设计学生公寓管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

蜣螂算法(原理)

原文(附文献下载) 1 群体智能优化算法 SI(swarm intelligence)系统的特点是个体间的相互作用促进了智能行为的出现。 SI优化过程的实现主要包括以下两个步骤&#xff1a; 在搜索空间范围内创建一组随机个体在迭代过程中组合、移动或进化这些随机个体。 每种优化算法的区别…