DSP 28335 学习笔记

对DSP进行开发时,需要对其底层的硬件及外设进行相应的配置,当配置完成后才可以将其相应模块激活,才可以在其内部进行程序编写及调试处理。下面对程序配置及操作进行简单的整理,仅供参考。

第一步:初始化系统控制,PLL,看门狗,使能外设时钟等,一般调用函数InitSysCtrl();
第二步:初始化GPIO,对于不同的硬件系统,进行不同的功能配置;
第三步:清除所有的中断并初始化PIE中断向量表
禁用CPU中断
DINT;
初始化PIE控制寄存器为默认状态
InitPieVectTable();
禁用CPU中断并清除所有的CPU中断标志
IER=0x0000;
IFR=0x0000;
初始化PIE中断向量表
InitPieVectTable();
EALLOW;
XXX-------此处填写程序中需要的中断,将其映射到中断向量表中(如
Pie VectTable.SCIRXINTA=&sciaRxFifoIsr;)
EDIS;
第四步:初始化所有外设(如果没有外设结构,此部分可省略);

  第五步:用户程序段,使能中断。以上为初步设计DSP程序的基本框架,具体要实现的功能还需在其中添加!

led 闪烁实验

参考
参考 2

CCS You are required to terminate existing debug…

debug后,直接点 terminate 小方框不行,ccs没停止上一次的 debug。
解决方法DSP程序调试时CCS如何安全退出调试状态

Example02_DSP2833x_LED/targetConfigs line 0

targetconfigs 直接复制过去一直都是感叹号,解决:重新创建一个把原来的删了

//###########################################################################
//
// FILE:    Example_2833xGpioToggle.c
//
// TITLE:   DSP2833x Device GPIO toggle test program. 
//
// ASSUMPTIONS:
//
//    This program requires the DSP2833x header files.  
//
//    ALL OF THE I/O'S TOGGLE IN THIS PROGRAM.  MAKE SURE
//    THIS WILL NOT DAMAGE YOUR HARDWARE BEFORE RUNNING THIS
//    EXAMPLE.
//
//    Monitor desired pins on an oscilloscope.
//
//    As supplied, this project is configured for "boot to SARAM" 
//    operation.  The 2833x Boot Mode table is shown below.  
//    For information on configuring the boot mode of an eZdsp, 
//    please refer to the documentation included with the eZdsp,  
//
//       $Boot_Table:
//
//         GPIO87   GPIO86     GPIO85   GPIO84
//          XA15     XA14       XA13     XA12
//           PU       PU         PU       PU
//        ==========================================
//            1        1          1        1    Jump to Flash
//            1        1          1        0    SCI-A boot
//            1        1          0        1    SPI-A boot
//            1        1          0        0    I2C-A boot
//            1        0          1        1    eCAN-A boot
//            1        0          1        0    McBSP-A boot
//            1        0          0        1    Jump to XINTF x16
//            1        0          0        0    Jump to XINTF x32
//            0        1          1        1    Jump to OTP
//            0        1          1        0    Parallel GPIO I/O boot
//            0        1          0        1    Parallel XINTF boot
//            0        1          0        0    Jump to SARAM	    <- "boot to SARAM"
//            0        0          1        1    Branch to check boot mode
//            0        0          1        0    Boot to flash, bypass ADC cal
//            0        0          0        1    Boot to SARAM, bypass ADC cal
//            0        0          0        0    Boot to SCI-A, bypass ADC cal
//                                              Boot_Table_End$
//
// DESCRIPTION:
//
//     Three different examples are included. Select the example 
//     (data, set/clear or toggle) to execute before compiling using
//     the #define statements found at the top of the code.   
//
//
//     Toggle all of the GPIO PORT pins 
//        
//    The pins can be observed using Oscilloscope.  
// #include "DSP28x_Project.h"     // Device Headerfile and Examples Include File/**************************************宏定义************************************************/
#define LED1_OFF		GpioDataRegs.GPBSET.bit.GPIO60 = 1							//LED D10 点亮
#define LED1_ON			GpioDataRegs.GPBCLEAR.bit.GPIO60 = 1						//LED D10 熄灭
#define LED2_OFF		GpioDataRegs.GPBSET.bit.GPIO61 = 1							//LED D11 点亮
#define LED2_ON			GpioDataRegs.GPBCLEAR.bit.GPIO61 = 1						//LED D11 熄灭
#define LED3_OFF		GpioDataRegs.GPASET.bit.GPIO2 = 1							//LED D12 点亮
#define LED3_ON			GpioDataRegs.GPACLEAR.bit.GPIO2 = 1						//LED D12 熄灭
#define LED4_OFF		GpioDataRegs.GPASET.bit.GPIO3 = 1							//LED D13 点亮
#define LED4_ON			GpioDataRegs.GPACLEAR.bit.GPIO3 = 1						//LED D13 熄灭
#define LED5_OFF		GpioDataRegs.GPASET.bit.GPIO4 = 1							//LED D14 点亮
#define LED5_ON			GpioDataRegs.GPACLEAR.bit.GPIO4 = 1						//LED D14 熄灭
#define LED6_OFF		GpioDataRegs.GPASET.bit.GPIO5 = 1							//LED D15 点亮
#define LED6_ON			GpioDataRegs.GPACLEAR.bit.GPIO5 = 1						//LED D15 熄灭
#define LED7_OFF		GpioDataRegs.GPASET.bit.GPIO6 = 1							//LED D16 点亮
#define LED7_ON			GpioDataRegs.GPACLEAR.bit.GPIO6 = 1						//LED D16 熄灭
#define LED8_OFF		GpioDataRegs.GPASET.bit.GPIO7 = 1							//LED D17 点亮
#define LED8_ON			GpioDataRegs.GPACLEAR.bit.GPIO7 = 1							//LED D17 熄灭#define DELAY_TIME	2000000															//延时时间
/*****************************************************************************************************//*********************************************函数声明************************************************/
void Init_LedGpio(void);
void delay(Uint32 t);
/*****************************************************************************************************/
void Init_LedGpio(void)
{EALLOW; //关闭写保护//LED D10  GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   		// Enable pullup on GPIO11 使能 GPIO 上拉电阻GpioDataRegs.GPBSET.bit.GPIO60 = 1;   		// Load output latch 设置 GPIO 输出高电平GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;  		// GPIO11 = GPIO 设置为通用 GPIO 功能GpioCtrlRegs.GPBDIR.bit.GPIO60  = 1;   		// GPIO11 = output  设置 GPIO 方向为输出  //LED D11GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPBSET.bit.GPIO61 = 1;   		// Load output latchGpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPBDIR.bit.GPIO61  = 1;   		// GPIO11 = output    //LED D12GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPASET.bit.GPIO2 = 1;   		// Load output latchGpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPADIR.bit.GPIO2 = 1;   		// GPIO11 = output   //LED D13    GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPASET.bit.GPIO3 = 1;   		// Load output latchGpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPADIR.bit.GPIO3 = 1;   		// GPIO11 = output    //LED D14	GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPASET.bit.GPIO4 = 1;   		// Load output latchGpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPADIR.bit.GPIO4 = 1;   		// GPIO11 = output    //LED D15	GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPASET.bit.GPIO5 = 1;   		// Load output latchGpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPADIR.bit.GPIO5 = 1;   		// GPIO11 = output    //LED D16	GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPASET.bit.GPIO6 = 1;   		// Load output latchGpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPADIR.bit.GPIO6 = 1;   		// GPIO11 = output    //LED D17	GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;   		// Enable pullup on GPIO11GpioDataRegs.GPASET.bit.GPIO7 = 1;   		// Load output latchGpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;  		// GPIO11 = GPIOGpioCtrlRegs.GPADIR.bit.GPIO7 = 1;   		// GPIO11 = output    EDIS;    //  开启写保护} 
/*********************************************延时函数************************************************/
void delay(Uint32 t)
{Uint32 i = 0;for (i = 0; i < t; i++);
}void main(void)
{// Step 1. Initialize System Control: 系统时钟初始化
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.InitSysCtrl();// Step 2. Initalize GPIO: 
// This example function is found in the DSP2833x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.Init_LedGpio();									//初始化LED的GPIO
// For this example use the following configuration:
//   Gpio_select();	  
// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts DINT;// Initialize PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.  
// This function is found in the DSP2833x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000;IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Interrupt 
// Service Routines (ISR).  
// This will populate the entire table, even if the interrupt
// is not used in this example.  This is useful for debug purposes.
// The shell ISR routines are found in DSP2833x_DefaultIsr.c.
// This function is found in DSP2833x_PieVect.c.InitPieVectTable();//--------------------------]]]]]]]]]]]]]]]]]]]--------------------------------------------------------   
// 烧写FLASH更换cmd文件,添加下面2行代码,并添加DSP2833x_MeMCopy.c(DSP280x_CSMPasswords.asm)文件,重新编译
//------------------------------------------------------------------
//   MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
//   InitFlash();
//-------------------------------------------------------------------
//]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]// Step 4. Initialize all the Device Peripherals:
// This function is found in DSP2833x_InitPeripherals.c
// InitPeripherals(); // Not required for this example// Step 5. User specific code:while(1)												//死循环{LED1_ON;											//LED1 D10 点亮delay(DELAY_TIME);									//延时LED1_OFF;											//LED1 D10 熄灭LED2_ON;											//LED2 D11 点亮delay(DELAY_TIME);									//延时LED2_OFF;											//LED2 D11 熄灭LED3_ON;											//LED3 D12 点亮delay(DELAY_TIME);									//延时LED3_OFF;											//LED3 D12 熄灭LED4_ON;											//LED4 D13 点亮delay(DELAY_TIME);									//延时LED4_OFF;											//LED4 D13 熄灭LED5_ON;											//LED5 D14 点亮delay(DELAY_TIME);									//延时LED5_OFF;											//LED5 D14 熄灭LED6_ON;											//LED6 D15 点亮delay(DELAY_TIME);									//延时LED6_OFF;											//LED6 D15 熄灭LED7_ON;											//LED7 D16 点亮delay(DELAY_TIME);									//延时LED7_OFF;											//LED7 D16 熄灭LED8_ON;											//LED8 D17 点亮delay(DELAY_TIME);									//延时LED8_OFF;											//LED8 D17 熄灭}
} 	/*****************************************************************************************************/   

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

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

相关文章

php 适配器模式

一&#xff0c;适配器模式&#xff0c;属于结构设计模式的一种&#xff0c;用于将一个类的接口转换成客户期望的接口。 1&#xff0c;目标接口&#xff08;Target Interface&#xff09;&#xff1a;是客户期望的接口&#xff0c;定义了客户要调用的方法。 2&#xff0c;适配器…

阿里云率先荣获容器集群稳定性先进级认证

7 月 25 日&#xff0c;由中国信通院发起的“2023 稳保体系”评估结果在可信云大会现场公布&#xff0c;阿里云容器服务 ACK 成为首批通过“云服务稳定运行能力-容器集群稳定性”评估的产品&#xff0c;并荣获“先进级”认证。 云原生技术正在激活应用构建新范式&#xff0c;构…

2023数字生态大会召开,长虹佳华再获3项大奖

近日&#xff0c;2023数字生态大会在北京隆重召开。长虹佳华勇夺“2023数字生态云计算服务卓越企业”、“2023数字生态元宇宙十强”和“数字生态增值分销商十强”三项大奖&#xff1b;还同时入选 “智慧教育十佳案例” 和 “智能制造十佳案例”。 长虹佳华是国企控股的香港上市…

Gcd 2023牛客暑期多校训练营6 G

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出一个集合&#xff0c;集合中初始有2个数x,y(x!y)&#xff0c;每次操作可以将集合中任意两个不等的数的差放入集合或者将两个不等的数的gcd放入集合&#xff0c;给出一个数z&#xff0c;问z有没有可能出现在集合里…

FFmpeg解码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。老版本的 FFmpeg 将avcodec_decode_video2()作为视频的解码函数 API&#xff0c;将avcodec_decode_audio4()作为音频的解码函数 API&#xff1b;从 3.4版本开始已经将二者标记为废弃过时 API&#xff08;attribut…

iTOP-RK3588开发板Ubuntu 系统交叉编译 Qt 工程-命令行交叉编译

使用源码 rk3588_linux/buildroot/output/rockchip_rk3588/host/bin/qmake 交叉编译 QT 工程。 最后烧写编译好的 buildroot 镜像&#xff0c;将编译好的 QT 工程可执行程序在 buildroot 系统上运行。 交叉编译 QT 工程如下所示&#xff0c;首先进入 QLed 的工程目录下。 然后…

【FAQ】EasyGBS平台通道显示在线,视频无法播放并报错400的排查

EasyGBS是基于国标GB28181协议的视频云服务平台&#xff0c;它可以支持国标协议的设备接入&#xff0c;在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能&#xff0c;既能作为业务平台使用&#xff0c;也能作为能力层平台调用。 我…

《每天十分钟》-红宝书第4版-语言基础-数据类型(五)

接上篇再学个比较有用的 Symbol.isConcatSpreadable 这个符号作为一个属性表示“一个布尔值&#xff0c;如果是 true&#xff0c;则意味着对象应 该用 Array.prototype.concat()打平其数组元素”。ES6 中的 Array.prototype.concat()方法会 根 据 接 收 到 的 对 象 类 型 选 择…

CS 144 Lab Four -- the TCP connection

CS 144 Lab Four -- the TCP connection TCPConnection 简述TCP 状态图代码实现完整流程追踪 测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Four 对应的PDF: Lab Checkpoint 4: down the stack (the network interface) TCPConnection 简述 TCPConnection 需要…

aardio:用 WebView 模仿 mdict 界面

aardio&#xff1a;用 WebView 模仿 mdict 界面 import win.ui; /*DSG{{*/ mainForm win.form(text"aardio2";right889;bottom467) mainForm.add( button{cls"button";text"go";left335;top22;right399;bottom41;z2}; button2{cls"button…

SpringBoot使用redis作为缓存的实例

目录 什么是缓存&#xff1f; 缓存的作用&#xff1f; 缓存的成本&#xff1f; 实际项目中的应用 代码展示 什么是缓存&#xff1f; 缓存就是数据交换的缓冲区&#xff08;称作Cache [ kʃ ] &#xff09;&#xff0c;是存贮数据的临时地方&#xff0c;一般读写性能较高。 缓…

HTML+CSS+JavaScript:两种方法实现商品价格筛选效果

一、需求 鼠标点击上方菜单栏中不同的价格区间&#xff0c;自动筛选出价格符合条件的商品&#xff0c;并渲染在页面中 二、代码素材 以下是缺失JS部分的代码&#xff0c;感兴趣的小伙伴可以先自己试着写一写 <!DOCTYPE html> <html lang"en"><head…

【绪论0】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.0 引言No.1 操作系统的概念功能和定义一、操作系统的概念和定义1、电脑的演变 二、操作系统的功能和目标 No.2 操作系统的特征一、并发二、共享三、虚拟四、异步 No.3 操作系统的发展与分类一、手工操作阶段二、批处理阶段…

ASPICE标准

ASPICE (Automotive Software Process Improvement and Capability Determination)是一种针对汽车软件开发过程的标准&#xff0c;旨在提高软件开发质量、安全性和效率。以下是ASPICE标准的详细说明&#xff1a; 概述&#xff1a;ASPICE标准定义了一个层次结构&#xff0c;包括…

git修改commit日志

由于公司对版本提交日志进行检查&#xff0c;如果不符合要求&#xff0c;则push失败。 以下是修改commit日志的方法&#xff1a; 1.进入到提交代码文件所在目录&#xff0c;即git所在目录下 cd app-repository 2.git log git log commit bf29e3e5e799d364fe2975677baf18c9…

Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-manager、kube-scheduler

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇

1.简介 我们知道Jmeter本身可以录制脚本&#xff0c;也可以通过BadBoy&#xff0c;BlazeMeter等工具进行录制&#xff0c;其实Fiddler也可以录制Jmter脚本&#xff08;而且有些页面&#xff0c;由于安全设置等原因&#xff0c;使用Jmeter直接无法打开录制时&#xff0c;这时就…

类的6个默认成员函数 构造函数

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生…

利用线程池多线程并发实现TCP两端通信交互,并将服务端设为守护进程

文章目录 实现目标实现步骤封装日志类封装线程池封装线程封装锁封装线程池 TCP通信的接口和注意事项accept TCP封装任务客户端Client.hppClient.cc 服务端Server.hpp Server.cc实现效果 守护进程服务端守护进程化 实现目标 利用线程池多线程并发实现基于TCP通信的多个客户端与…

JavaSE【继承和多态】(1)(重点:初始化、pretected封装、组合)

一、继承 继承 (inheritance) 机制 &#xff1a;是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特 性 的基础上进行扩展&#xff0c;增加新功能 &#xff0c;这样产生新的类&#xff0c;称 派生类 。 继承呈现了面向对象程序设计的层次结…