news 2026/6/10 16:47:18

【普中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/6/10 13:23:50

全网最全10个一键生成论文工具,研究生高效写作必备!

全网最全10个一键生成论文工具,研究生高效写作必备! AI 工具崛起,论文写作迎来新可能 在研究生阶段,论文写作不仅是学术能力的体现,更是时间与精力的双重挑战。随着 AI 技术的不断进步,越来越多的工具被应…

作者头像 李华
网站建设 2026/6/10 13:24:19

告别“炼丹”:两千AI化学专家协同作战,合成路线预测成功率高达71%

现代化学家正深陷一场前所未有的“数据洪流”。每年数十万篇文献涌现,百万量级的合成知识却大多以碎片化文本散落各处。依赖人力检索与试错,不仅效率低下,更让海量潜藏的有效方案难以转化为现实。这一知识管理与应用转化的深刻矛盾&#xff0…

作者头像 李华
网站建设 2026/6/3 11:25:01

【读书笔记】《张爱玲传》

张爱玲传:孤独而天才的一生 一、显赫的家世背景 祖辈渊源 祖父张佩纶:李鸿章的女婿,名门之后祖母李菊藕:李鸿章之女姑姑张茂渊:与张爱玲关系密切,影响其一生父亲张志忠:天津津浦铁路局英文秘书&…

作者头像 李华
网站建设 2026/6/10 15:55:09

Laravel Boost v2.0 发布 正式支持 Skills

Laravel Boost v2.0 发布 正式支持 Skills Laravel Boost 发布了 2.0 版本,核心变化是引入了 Skills 系统。这套机制改变了 AI Agent 获取上下文的方式——从"一次性加载所有指南"变为"按需激活相关技能"。 实测效果:原有的 Guide…

作者头像 李华
网站建设 2026/6/10 15:23:29

通义千问2.5-7B长文本处理实战:百万汉字解析部署案例

通义千问2.5-7B长文本处理实战:百万汉字解析部署案例 1. 这个模型到底能干啥?先说人话版 你有没有遇到过这样的场景:手头有一份80页的PDF技术白皮书、一份30万字的行业调研报告,或者一段长达两小时的会议录音转文字稿&#xff1…

作者头像 李华
网站建设 2026/6/10 15:57:49

给排水工程计算实例技巧汇总

给排水工程是安装工程造价的重要组成部分,也是相对简单易上手的专业,今天我们通过一个案例,带你理清计算思路,学会图纸识读,总结计算规则。从结合CAD快速看图的相关功能,为大家分享给排水工程的计算方法。 …

作者头像 李华