DSP28335学习笔记-4

news2024/11/14 9:49:36

中断部分我觉得写太多理论方面,也是很容易让人看不懂,望而却步。

下面写一些日常使用的代码

初始化配置过程,放在void EXTI1_init()中;

1、使能外设对应的PIE中断

根据下表来判断中断连接哪一组的哪一根线。

下面是常用的表单,对应每一个中断对应

INT1.1SEQ1INT(ADC)
INT1.2SEQ2INT(ADC)
INT1.4XINT1
INT1.5XINT2
INT1.6ADCINT(ADC)
INT1.7TINT0(CPU定时器0)
INT3.1ePWM1_INT(ePWM1)
INT3.2ePWM2_INT(ePWM2)
INT3.3ePWM3_INT(ePWM3)
INT3.4ePWM4_INT(ePWM4)
INT3.5ePWM5_INT(ePWM5)
INT3.6ePWM6_INT(ePWM6)
INT4.1eCAP1_INT(eCAP1)
INT4.2eCAP2_INT(eCAP2)
INT4.3eCAP3_INT(eCAP3)
INT4.4eCAP4_INT(eCAP4)
INT4.5eCAP5_INT(eCAP5)
INT4.6eCAP6_INT(eCAP6)

使能外部中断1

PieCtrlRegs.PIEIER1.bit.INTx4=1; //使能PIE组1的INT4

2、使能外设中断

该中断由外设相关中断使能位来控制,比如外部中断1由外部中断1的控制寄存器中相应中断使能位来控制。

XIntruptRegs.XINT1CR.bit.ENABLE=1; //使能XINT1

3、触发中断

XIntruptRegs.XINTCR1.bit.POLARITY=0;//下降沿触发中断

XIntruptRegs.XINTCR1.bit.ENABLE=1;//使能外部中断1

4、指定中断向量表中断服务函数地址

通过对PIE中断向量表寄存 器的相应位进行设置,中断服务函数名可自定义。中断函数名前需加上地址符“&”。对PIE中断向量表寄存器设置时要注意在程序前加入EALLOW,以修改被保护的寄存器;程序后加入EDIS,不允许修改被保护的寄存器。

EALLOW; 
PieVectTable.XINT1=&EXTI1_IRQn;//函数名需要添加&
 EDIS;

4、使能CPU中断及全局中断

通过对IER和EINT寄存器相应位设置进行使能或者无效。

配置外部中断程序如下

IER|=M_INT1;//使能CPU中断1
EINT;//开全局中断
ERTM;

5、配置中断服务程序

配置好中断后如果有触发,即会进入中断服务函数,中断服务函数名在步骤3定义好,在&之后的名字。前后保证一致,否则将不会进入中断服务函数内执行。在DSP28335 软件开发中,要在中断服务函数名前加上关键字interrupt。

外部中断1的 中断服务函数如下

interrupt void EXT1_IRQn(void)
{

   功能;
}

完整初始化函数程序如下

#include"exti.h"
#include"led.h"
#include"key.h"
void EXTI1_init()
{
   EALLOW;
   SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK=1;//GPIO输入时钟

   EDIS;


  EALLOW;
  GpioCtrlRegs.GPAMUX1.bit.GPIO12=0;//将GPIO12设为通用IO
  GpioCtrlRegs.GPADIR.bit.GPIO12=0;//输入

  GpioCtrlRegs.GPAPUD.bit.GPIO12=0;//上拉电阻
  GpioCtrlRegs.GPAQSEL1.bit.GPIO12=0;//外部中断1和系统时钟同步
 EDIS;

  EALLOW;
   GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL=12;//XINT1对应GPIO12
  EDIS;
  
  EALLOW;
PieVectTable.XINT1=&EXTI1_IRQn;//中断向量表地址
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx4=1;//由于外部中断1对应1.4
XIntruptRegs.XINT1CR.bit.POLARITY=0;//按下按钮,下降沿触发中断;
XIntruptRegs.XINT1CR.bit.ENABLE=1;//使能外部中断1;
IER|=M_INT1;//使能外部中断1;
EINT;//开全局中断
ERTM;}

interrupt void EXTI1_IRQn(void)
{
   Uint32 i;
    for(i=0;i<10000;i++);//消抖
   while(!KEY_H1)//等待按钮按下
    LED_TOGGLE;

   PieCtrlRegs.PIEACK.bit.ACK1=1;//执行后消除中断标志,ACK清0,PIE给CPU一个脉冲
}


  

主函数

void main()
{   int i;

    InitSysCtrl();
   InitPieCtrl();
    IER|=0x00;

    IFR|=0x00;
    InitPieVectTable();
    LED_Init();
   EXTI1_Init();

   while(1)
{  i++;

   if(i%2000==0)
{LED2_TOGGLE;//200ms闪烁一次
}
  delay_us(100);
}}

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

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

相关文章

【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)

#华南理工大学主办&#xff01;#IEEE出版&#xff01;EI稳定检索&#xff01;#组委阵容强大&#xff01;IEEE Fellow、国家杰青等学术大咖领衔出席&#xff01;#会议设置“优秀论文”“优秀青年学者报告”“优秀海报”等评优奖项 2024智能机器人与自动控制国际学术会议 &#…

Unity3D学习FPS游戏(12)敌人检测和攻击玩家

前言&#xff1a;上一篇实现了敌人能动&#xff0c;有了点乐趣&#xff0c;但是敌人和玩家没什么对抗性。本篇将实现敌人追击玩家&#xff0c;并攻击玩家。 敌人攻击玩家 敌人检测玩家目标思路-碰撞检测的Trigger触发实现 敌人攻击目标思路-模仿玩家发射子弹的思路实现 效果 敌…

nginx代理后jsp如何获取http协议

1. nginx配置增加返回协议类型&#xff08;http或https&#xff09; location / {proxy_set_header X-Forwarded-Proto $scheme; } 2. 修改jsp配置 原jsp配置&#xff1a; <%String basePath request.getScheme()"://"request.getServerName()":"r…

#渗透测试#SRC漏洞挖掘#蓝队基础之网络七层杀伤链01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

uni-app移动端与PC端兼容预览PDF文件

过程遇到的问题 1、如果用的是最新的版本的pdfjs的话&#xff0c;就会报Promise.withResolvers 不是一个方法的错误&#xff0c;原因是Promise.withResolvers是ES15新特性&#xff0c;想了解可参考链接&#xff0c;这里的解决方案是将插件里的涉及到Promise.withResolvers的地…

HBase使用create创建表时报错ERROR: KeeperErrorCode = NoNode for /hbase/master

场景模拟 1. 正常情况 模拟ERROR: KeeperErrorCode NoNode for /hbase/master错误场景。 正常情况下创建hbase表如下图所示。 2. 删除hbase集群的zk节点 进入zookeeper客户端。 zkCli.sh删除hbase的zk节点。 deleteall /hbase退出zookeeper客户端。 quit3. 重启hbase集…

前端web

题目&#xff1a;制作带有下拉悬停菜单的导航栏 效果图 一、先制作标签 <body> <div id"menu"> <div id"container"> <div class"item">游戏1 <div class…

实测运行容器化Tomcat服务器

文章目录 前言一、拉取Tomcat 9.0镜像二、运行容器化Tomcat服务器三、访问Tomcat官网首页测试 总结 前言 运行容器化Tomcat服务器&#xff0c;首先确保正确安装docker&#xff0c;并且已启动运行&#xff0c;具体安装docker方法见笔者前面的博文《OpenEuler 下 Docker 安装、配…

PHP图书绘本借阅管理系统小程序源码

&#x1f4da; 图书绘本借阅管理系统&#xff1a;打造孩子的阅读乐园 &#x1f4da; &#x1f3f7;️ 引言&#xff1a;为什么我们需要图书绘本借阅管理系统&#xff1f; 在孩子的成长旅程中&#xff0c;阅读是不可或缺的一部分。然而&#xff0c;面对琳琅满目的图书和绘本&a…

炼码LintCode--数据库--基础语法--刷题笔记_01

目录 炼码LintCode数据库入门级别的笔记未完待续~~~ 炼码LintCode 数据库 入门级别的笔记 笔记如下&#xff0c;把所有涉及到的入门级别的知识点简单总结了一下。 以及一点点举一反三的写法。 增 INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);批量增 INSERT INT…

【含开题报告+文档+PPT+源码】基于SpringBoot和Vue框架的棋谱管理系统

开题报告 随着信息技术的飞速发展&#xff0c;尤其是互联网、大数据和人工智能等技术的进步&#xff0c;棋类运动在全球范围内得到了更广泛的推广和深入的研究。棋谱作为棋类运动的重要组成部分&#xff0c;是记录对弈过程、分析棋艺、传承棋道文化的关键载体。然而&#xff0…

three.js 杂记

clip&#xff1a; 1&#xff1a; 着色器 #ifdef USE_CLIP_DISTANCE vec4 worldPosition modelMatrix * vec4( position, 1.0 ); gl_ClipDistance[ 0 ] worldPosition.x - sin( time ) * ( 0.5 ); #endif gl_Position projectionMatrix * modelViewMatrix * vec4( positio…

并发基础:(淘宝笔试题)三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC....”的字符串【举一反三】

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷于探索一些框架源码和算法技巧奥秘,还乐于分享这些宝贵的知识和经验。 💡 无论你是刚刚踏…

C# 异步Task异常处理和堆栈追踪显示

Task的问题 在C#中异步Task是一个很方便的语法&#xff0c;经常用在处理异步&#xff0c;例如需要下载等待等方法中&#xff0c;不用函数跳转&#xff0c;代码阅读性大大提高&#xff0c;深受大家喜欢。 但是有时候发现我们的异步函数可能出现了报错&#xff0c;但是异常又没…

ssm102“魅力”繁峙宣传网站的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;“魅力”繁峙宣传网站系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了“魅力”繁峙宣传网站系统的发展&#x…

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并--封装到存储过程中

MySQL技巧之跨服务器数据查询&#xff1a;基础篇-A数据库与B数据库查询合并–封装到存储过程中 我们的最终目的是什么&#xff1f;当然的自动执行这些合并操作&#xff01; 上一篇 MySQL技巧之跨服务器数据查询&#xff1a;基础篇-A数据库与B数据库查询合并 我们已经知道怎么合…

短视频新纪元:AI数字人重塑视频运营格局

步入2024年&#xff0c;AI数字人技术如同一股不可忽视的力量&#xff0c;正深刻影响着视频运营的每一个角落。据行业权威机构艾媒咨询的统计数据显示&#xff0c;2023年&#xff0c;数字人相关企业注册数量激增948家&#xff0c;增长率高达68%&#xff0c;这一数据直观反映了数…

Ajax 获取进度和中断请求

HTML加入一些内容方便看效果和做交互&#xff1a; <div><p>当前传输进度&#xff1a;<span id"progress">0%</span></p><button id"send">发送</button><button id"btn">中断</button> …

ctfshow-web入门-SSTI(web361-web368)上

目录 1、web361 2、web362 3、web363 4、web364 5、web365 6、web366 7、web367 8、web368 1、web361 测试一下存在 SSTI 注入 方法很多 &#xff08;1&#xff09;使用子类可以直接调用的函数来打 payload1&#xff1a; ?name{{.__class__.__base__.__subclasses__…

Python学习从0到1 day28 Python 高阶技巧 ⑤ 多线程

若事与愿违&#xff0c;请相信&#xff0c;上天自有安排&#xff0c;允许一切如其所是 —— 24.11.12 一、进程、线程 现代操作系统比如Mac OS X&#xff0c;UNIX&#xff0c;Linux&#xff0c;Windows等&#xff0c;都是支持“多任务”的操作系统。 进程 进程&#xff1a;就…