news 2026/2/22 10:56:09

【普中DSP28335开发攻略】-- 第 31 章 FLASH 实验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【普中DSP28335开发攻略】-- 第 31 章 FLASH 实验

(1)实验平台:普中DSP28335开发板


在前面章节那些实验我们都是将程序烧写到芯片 RAM 中运行调试的, 我们知道 RAM 中存储的东西在掉电后是会丢失的, 也就是说程序烧入到 RAM 中运行, 如果系统电源关闭后再开启, 之前下载的程序是不会再运行的。 如果我们做好的产品给客户不可能还让客户像我们这样使用 DSP 仿真器去烧录程序运行, 所以非常有必要学习如何将程序烧入到芯片 FLASH 中, 这样即使掉电也不会丢失。 本章就来介绍如何将程序烧入到芯片 FLASH 中。 本章所要实现的功能是: 在串口通信实验程序基础上改成 FLASH 模式, 在定时器 0 中断中控制 D1 指示灯间隔 200ms 闪烁。 本章分为如下几部分内容:

31.1 配置成 FLASH 模式步骤

31.2 硬件设计

31.3 软件设计

31.3.1 主函数

31.4 实验现象


31.1 配置成 FLASH 模式步骤

①将前面定时器实验章节的程序“Example24_DSP2833x_SCI_echoback” 复制一份, 重新命名为“Example43_DSP2833x_Flash_led” 。 如下:

②打开 CCS 软件, 导入工程“Example43_DSP2833x_Flash_led” , 并将 CCS软件工程名修改为实验名称, 这个在最开始实验章节就有介绍。 如下所示:

③将工程目录“DSP2833x_Libraries” 下的 28335_RAM_lnk.cmd 删除, 然后从 TI 提供 给我 们的 库文件 中把 “ F28335.cmd” 拷贝 到现 在实 验文件 夹“DSP2833x_Libraries” 目录下。 如下:

在工程目录下自动将“F28335.cmd” 文件更新进来, 如下:

该文件是对 FLASH 模式的配置, TI 公司已经给我们配置好了, 一般我们不需要更改。

④在 main 函数开始处添加 FLASH 模式配置的必须代码, 如下:

//复制对时间敏感代码和 FLASH 配置代码到 RAM 中 // 包括 FLASH 初始化函数 InitFlash(); // 链 接 后 将 产 生 RamfuncsLoadStart, RamfuncsLoadEnd, 和 RamfuncsRunStart // 参数. 请参考 F28335.cmd 文件 MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); // 调用 FLASH 初始化函数来设置 flash 等待状态 // 这个函数必须在 RAM 中运行 InitFlash();

上述两条语句是在使用 FLASH 模式必要的, 通过这两条语句以及 F28335.cmd文件即可将程序烧入到芯片的 FLASH 中, 这样程序断电后也不会丢失。

至此, 我们就介绍完了如何将 RAM 调试程序修改成 FLASH 程序, 大家只要按照上述步骤完成即可, 重点是第 3、 4 步。

31.2 硬件设计

本实验使用到硬件资源如下:

(1) D1 指示灯

(2) TIM0

(3) RS232 模块

LED 灯、 RS232 模块电路在前面章节已介绍, 这里就不多说, 至于 TIM0 它是F28335 芯片内部外设资源, 只需通过软件配置即可使用。

31.3 软件设计

31.3.1 主函数

其他代码与串口通信实验一样, 只是在 main 函数开始处增加了 FLASH 初始化代码, main 函数代码如下:

#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File #include "leds.h" #include "time.h" #include "uart.h" #include "stdio.h" /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { Uint16 i=0; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); //复制对时间敏感代码和FLASH配置代码到RAM中 // 包括FLASH初始化函数 InitFlash(); // 链接后将产生 RamfuncsLoadStart, RamfuncsLoadEnd, 和RamfuncsRunStart // 参数. 请参考 F28335.cmd 文件 MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); // 调用FLASH初始化函数来设置flash等待状态 // 这个函数必须在RAM中运行 InitFlash(); LED_Init(); TIM0_Init(150,200000);//200ms UARTa_Init(4800); while(1) { } }

31.4 实验现象

使用仿真器将开发板和电脑连接成功后, 把编写好的程序编译后, 如果没有报错即可将点击仿真调试, 程序即会写入到芯片的 FLASH 内, 运行结果是: D1指示灯间隔 200ms 闪烁。 当系统断电后再打开, 程序仍然会运行, 因为我们已经将程序烧入到芯片内 FLASH 中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/18 14:42:39

计算机毕设java飞机票管理系统 基于Java的航空票务管理平台设计与实现 Java技术驱动的航班票务管理系统开发

计算机毕设java飞机票管理系统7h5v09 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网的普及和航空出行的日益频繁,传统的飞机票管理模式已难以满足现代用户…

作者头像 李华
网站建设 2026/2/21 7:17:12

HY-MT1.5-1.8B自动化部署:CI/CD流水线集成实战

HY-MT1.5-1.8B自动化部署:CI/CD流水线集成实战 1. 为什么需要为HY-MT1.8B构建CI/CD流水线? 你有没有遇到过这样的情况:模型在本地跑得好好的,一上测试环境就报CUDA内存不足;开发同学改了提示词模板,测试同…

作者头像 李华
网站建设 2026/2/21 10:45:37

2026必备!自考论文神器TOP10:AI论文工具深度测评与推荐

2026必备!自考论文神器TOP10:AI论文工具深度测评与推荐 2026年自考论文写作新趋势与工具测评方向 随着人工智能技术的不断进步,越来越多的自考学生开始依赖AI论文工具来提升写作效率与质量。然而,面对市场上琳琅满目的选择&…

作者头像 李华
网站建设 2026/2/22 4:11:49

吐血推荐研究生必用TOP9 AI论文网站

吐血推荐研究生必用TOP9 AI论文网站 2026年研究生必备AI论文工具深度测评 随着人工智能技术在学术领域的广泛应用,越来越多的研究生开始依赖AI工具提升论文写作效率与质量。然而,面对市场上五花八门的AI论文网站,如何选择真正适合自己研究方向…

作者头像 李华
网站建设 2026/2/21 14:16:36

2.14 Docker镜像仓库管理:Harbor私有仓库搭建与镜像推送实战

2.14 Docker镜像仓库管理:Harbor私有仓库搭建与镜像推送实战 引言 镜像仓库是容器化应用的重要组成部分。Harbor是VMware开源的企业级Docker镜像仓库,提供安全、高可用的镜像管理能力。本文将详细介绍Harbor的安装、配置和使用方法。 一、镜像仓库概述 1.1 仓库类型 公共…

作者头像 李华
网站建设 2026/2/12 11:41:59

3.1 Kubernetes架构深度解析:Master和Node节点核心组件详解 (2)

3.1 Kubernetes架构深度解析:Master和Node节点核心组件详解 引言 Kubernetes是容器编排的事实标准,理解其架构是掌握Kubernetes的关键。本文将深入解析Kubernetes的Master和Node节点架构,以及各个核心组件的功能和工作原理。 一、Kubernetes架构概述 1.1 整体架构 ┌─…

作者头像 李华