TS201的Flag输出状态控制LED亮灭原理和例程(含参考代码)

news2024/11/17 9:48:01

目的:

理解FLAG可编程作为输入输出引脚,并且能够利用按键进行相应FLAG(FLAG0,FLAG1)标志的输入来相应的FLAG标志(FLAG2,FLAG3)输出来控制与之相连的LED。掌握外部中断和定时器中断的设置以及其响应过程,理解外部硬件可以直接与IRQx相连来产生外部硬件中断进行相应的处理。

任务:
1:通过改变Flag输出状态控制LED亮灭
2:通过外部中断IRQ0控制DMA传输
3:通过外部中断IRQ0控制Flag输出状态
4:利用timer0定时器中断控制Flag输出状态

1. 通过改变Flag输出状态控制LED亮灭

原理:

EZ-KIT Lite评估板上每个DSP都有4个Flag Pins,这是一种可以控制方向(input\output)的管脚。在评估板上这些管脚有2个接Button按钮,有2个接LED,他们在电路板上的分布如下图:

在这里插入图片描述

在上面图中,我已经把按键和LED灯实际名称如(如LED4,SW9)和DSP上的名称(如flag2,flag0)都对应起来,下表简单介绍了这些Flag Pins的作用:也就是说,每片DSP上的Flag0和Flag1作为按键Button输入,而Flag2和Flag3作为LED输出。

在这里插入图片描述

Flag0和Flag1作为按键:

Flag0和Flag1作为按键,当它们初始化为输入后,在没有按下时为低电平(注意中间有个反相器),而按下按键时为高电平。所以SQSTAT寄存器在按下按键时FLG0或FLG1才为1,这样可以使用判断语句来查询状态,判断是否按下。

在这里插入图片描述

Flag2和Flag3作为LED:

Flag2和Flag3作为LED,当她们初始化为输出后,FLAGREG中的FLAG2_OUT或FLAG3_OUT位,对其置位对应的LED才亮,而清零则LED熄灭。

在这里插入图片描述

Flag Pins的寄存器:
四个FLGA3-0管脚,都可配置为输入或输出,系统上电后默认是输入;
1.FLAGREG:(FLAGx_EN =0)输入,(FLAGx_EN =1)输出
2.输出时:FLAGREG中的FLAGx_OUT位,对其置位或清零
3 .输入时:SQSTAT中的FLGx位,查看状态。或者使用条件指令中的FLAGx_IN标志。

在这里插入图片描述

FLAGREG寄存器

在这里插入图片描述

SQSTAT寄存器中的FLGx位

在这里插入图片描述

调试步骤:

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

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

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

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

在这里插入图片描述

5)用仿真器将PC与EZ-KIT板连接;

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

7)编译工程,在弹出的处理器选择窗口中,选择处理器A作为本次试验的处理器(即将DSP B[ID1]后面的仿真文件路径剪切到DSP A[ID0]后面的仿真文件路径框中),然后运行程序,观察实验板右下方LED的亮灭情况;

结果:
1)按照实验步骤,完成参考代码1实验,并记录实验现象;

2)按照实验步骤,理解参考代码2,并验证预期试验现象(按键控制LED在点亮和熄灭两种状态下切换);

3)修改程序代码2,使FLAG0_A对应的按键控制FLAG2_A输出(LED4)在熄灭和闪烁两种状态间切换。

参考源代码:

代码1:
#include<stdio.h>
#include<builtins.h>
#include<sysreg.h>
#include<defts201.h>

#define SET_FLAG_OUT(x) __builtin_sysreg_write(__FLAGREGST, (x) );
#define CLR_FLAG_OUT(x) __builtin_sysreg_write(__FLAGREGCL, (~(x)) );

int main( void )
{
int i;
__builtin_sysreg_write(__FLAGREGST, FLAGREG_FLAG2_EN | FLAGREG_FLAG3_EN); //将FLAG2, FLAG3设为输出模式,用于LED闪烁
__builtin_sysreg_write(__FLAGREGCL, ~( FLAGREG_FLAG0_EN|FLAGREG_FLAG1_EN) ); //将FLAG0, FLAG1设为输入模式,用于按键
while(1) {
SET_FLAG_OUT(FLAGREG_FLAG2_OUT);
CLR_FLAG_OUT(FLAGREG_FLAG3_OUT);
for(i=0; i<8000000; i++);
SET_FLAG_OUT(FLAGREG_FLAG3_OUT);
CLR_FLAG_OUT(FLAGREG_FLAG2_OUT);
for(i=0; i<8000000; i++);
}
}

代码2:
#include<stdio.h>
#include<builtins.h>
#include<sysreg.h>
#include<defts201.h>

#define SET_FLAG_OUT(x) __builtin_sysreg_write(__FLAGREGST, (x) );
#define CLR_FLAG_OUT(x) __builtin_sysreg_write(__FLAGREGCL, (~(x)) );

int main( void )
{
int i;
__builtin_sysreg_write(__FLAGREGST, FLAGREG_FLAG2_EN | FLAGREG_FLAG3_EN); //将FLAG2, FLAG3设为输出模式,用于LED闪烁
__builtin_sysreg_write(__FLAGREGCL, ~( FLAGREG_FLAG0_EN|FLAGREG_FLAG1_EN) ); //将FLAG0, FLAG1设为输入模式,用于按键

static int button0=0, button1=0;
static int led0=0, led1=0;
int sqstat=0;

while(1){
//如果button0按下,反转button0状态
sqstat = __builtin_sysreg_read(__SQSTAT);
if( sqstat & ( 1<<SQSTAT_FLG_P) ){ //按下按键为高电平
for(i=0; i<800000; i++); //按键消抖延时
sqstat = __builtin_sysreg_read(__SQSTAT);
if( sqstat & ( 1<<SQSTAT_FLG_P) )
button0 = ! button0;
}

//如果button1按下,反转button1状态
sqstat = __builtin_sysreg_read(__SQSTAT);
if( sqstat & ( 2<<SQSTAT_FLG_P) ){
for(i=0; i<800000; i++); //按键消抖延时
sqstat = __builtin_sysreg_read(__SQSTAT);
if(sqstat & ( 2<<SQSTAT_FLG_P) )
button1 = ! button1;
}

//根据button0状态,点亮/熄灭LED2
if(button0 == 0){
CLR_FLAG_OUT(FLAGREG_FLAG2_OUT);

} else {
SET_FLAG_OUT(FLAGREG_FLAG2_OUT);
}

//根据button1状态,点亮/熄灭LED3
if(button1 == 0){
CLR_FLAG_OUT(FLAGREG_FLAG3_OUT);
} else {
SET_FLAG_OUT(FLAGREG_FLAG3_OUT);
}
for(i=0; i<4000000; i++);
}
}

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

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

相关文章

hevc帧内planer预测模式和角度预测模式

帧内planer预测模式 planer预测模式适用于纹理相对平缓的图像区域&#xff0c;对于各个编码宏块而言&#xff0c;它不但能保持图像宏块边界良好的连续性。而且可以利用平面梯度信号随像素值的变化趋势而变化&#xff0c;在Planer预测模式下&#xff0c;可以将预测像素Px,y 看作…

企业应收账款管理存在的问题及对策

应收账款也就是信用交易&#xff0c;企业应收账款的产生是企业采取信用销售方式的必然结果。 现如今信用交易已经成为企业提高竞争力、扩大销售的必要手段&#xff0c;它充分挖掘和利用了企业的现有生产能力&#xff0c;扩大了销售量&#xff0c;增加了产品的市场份额&#xf…

潮玩积木国产化浪潮里,“中国积木”的自证之路

随着Z世代的崛起&#xff0c;潮玩从小众兴趣领域进入大众视野。 其中&#xff0c;作为年轻人喜爱的潮流品类之一&#xff0c;拼搭积木正在成为潮玩赛道的新风口。 哪怕疫情影响下&#xff0c;作为非必需消费品的积木仍然保持着中高速市场增长&#xff0c;足以被视为消费领域的…

[附源码]计算机毕业设计路政管理信息系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ChatGPT入门指南

ChatGPT入门指南什么是ChatGPT&#xff1f;为什么ChatGPT意义重大&#xff1f;如何使用ChatGPT什么是ChatGPT&#xff1f; ChatGPT是基于聊天的生成预训练transformer模型的缩写&#xff0c;是一个强大的工具&#xff0c;可以以各种方式使用&#xff0c;以提高您在许多领域的生…

【Python】基础语法 3 (函数)

函数详解1. 函数是什么2. 语法格式3. 函数参数4. 函数返回值5. 变量作用域6. 函数执行过程7. 链式调用8. 嵌套调用9. 函数递归10. 参数默认值11. 关键字参数1. 函数是什么 编程中的函数和数学中的函数有一定的相似之处。 数学上的函数&#xff0c;比如 y sinx&#xff0c;x 取…

如何创建微信小程序?【创建小程序】

如何创建微信小程序呢&#xff1f;这是很多没有小程序的小伙伴经常问的问题&#xff0c;现在小程序给我们带来很多便利&#xff0c;而且很多企业公司也会有自己的小程序提供给他们的客户使用。那么创建微信小程序的步骤是什么呢&#xff0c;下面跟大家说说如何创建微信小程序。…

centos 模拟路由器功能实现内网和外网的联通

如下图的网络结构 192.168.65.128是一个windows主机&#xff0c;仅链接vmnet1的网卡。属于内网&#xff0c;无法连接外网&#xff0c;路由如下&#xff1a; IPv4 路由表 活动路由: 网络目标 网络掩码 网关 接口 跃点数 127.0.0.0 255.…

飞剪、追剪算法详细图解(附PLC完整源代码)

谈到运动控制就离不开编码器,有关编码器测速,测距的相关内容,大家可以查看专栏的其它文章,和飞剪控制息息相关的编码器测速,请参看下面的博客,链接如下: 如何通过编码器信号计算输送线/输送带线速度(飞剪、追剪算法基础)_RXXW_Dor的博客-CSDN博客不同品牌PLC如何采集…

Acrel-2000Z电力监控系统在重庆五桂堂历史文化商业街区的应用-Susie 周

1、项目概述 据悉原五桂堂街是一条上百年的地地道道的涪陵“老街”&#xff0c;北起火神庙&#xff08;后来的铁器社&#xff09;西侧&#xff0c;南止天主堂大门前横街尽头&#xff0c;长约200米&#xff0c;宽约2米&#xff0c;该项目建设地点位于重庆市涪陵区敦仁街道望栏桥…

设备树(Device Tree)

设备树介绍&#xff1a; 设备树是一个描述设备硬件资源的文件&#xff0c;该文件是由节点组成的树形结构。如下&#xff1a; / { node1 { a-string-property "A string"; a-string-list-property "first string", "second string"; // hex is …

Linux磁盘管理

Linux磁盘管理实验目的及要求1.熟悉Linux下磁盘的基本管理方法。2.了解Linux磁盘配额管理的意义和基本方法。3.掌握mount、fdisk、df等常用的磁盘管理命令。实验原理实验步骤1.使用不同的方法挂载/卸载磁盘并查看相关信息&#xff0c;具体步骤如下&#xff1a;1.挂载一个光驱或…

简述人工神经网络的定义,简述神经网络算法

1、人工智能十大算法 人工智能十大算法如下 线性回归&#xff08;Linear Regression&#xff09;可能是最流行的机器学习算法。线性回归就是要找一条直线&#xff0c;并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量&#xff08;x…

mapbox一学就会系列:01 第一个地图页面

文章目录前言一、mapbox是什么&#xff1f;官网官网示例效果尝鲜二、使用步骤1.引入mapbox-gl.js库在线库npm 形式安装2.使用方法无账号则申请&#xff0c;有账号则登录申请完成后&#xff0c;获取token创建一个地图元素容器使用token并配置创建一个地图示例效果总结前言 最近…

PMP项目管理证书有用么?什么人可以考呢?

有用&#xff0c;非常有用&#xff0c;PMP如今的价值在于越来越多的招聘和公司都需要PMP证书&#xff0c;有需求就有价值。&#xff08;资料文末&#xff09; 需求分两个方面来说&#xff0c;一个是个人&#xff0c;一个是组织。 个人的用处&#xff1a; 项目管理几乎不限行业…

fasterxml jaskson的使用

fasterxml jaskson 的使用为啥要撰写这玩儿&#xff1f;解析json格式字符串判断是否是json格式字符串解析原理与解析函数如何使用该函数&#xff1f;为啥要撰写这玩儿&#xff1f; 由于SpringBoot的依赖默认使用fasterxml-jaskson&#xff08;可能是由于不想使用其他json处理包…

[附源码]Python计算机毕业设计Django疫苗及注射管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

员工账号管理,超市便利店烟酒茶叶服装门店零售手机收银软件APP

https://www.bilibili.com/video/BV1v841157e4/?vd_sourcebe5b336e3cce67dfc9122f3eaf7119ad我们的门店零售手机收银A P P&#xff0c;不限制用户数&#xff0c;也就是有多少零售收银员工&#xff0c;都可以给他们分配账号&#xff0c;并下载A P P登录使用。, 视频播放量 1、弹…

计算两个颜色相似度

1.计算两个颜色相似度的公式如下: 颜色QColor1(R1, G1, B1)转成h1,s1,v1 颜色QColor2(R2, G2, B2)转成h2,s2,v2 detah=h1-h2 detas=s1-s2 detav=v1-v2 len = qsrt(detah * detah + detas * detas + detav * detav) if (len > 1) len = 1.0 similarity = (1.0 - le…

frp内网穿透(Mac远程连接公司windows)

文章目录1、需求&#xff1a;自己的电脑远程访问公司的windos电脑2、搭建内网穿透&#xff1a;准备工具3、安装运行3.1 服务端配置3.2 客户端配置4、远程连接1、需求&#xff1a;自己的电脑远程访问公司的windos电脑 自己电脑Mac连公司windows&#xff1a;通过Microsoft Remote…