【单片机】MSP430MSP432入门
文章目录
- 0 前言
- 1 开发方式选择
- 2 CCS和开发相关软件
- 3 Keil开发MSP432
- 4 IAR for 430开发MSP430
- 5 总结
0 前言
最近因为想学DSP,所以把之前卸载的CCS给装回来了,手头也还有之前电赛剩下的MSP430和MSP432的板子,由于年代久远,想着花点时间回忆一下,顺便整理之前乱七八槽的文件资料,以作备忘。
不得不说,随着学习的深入,面对新的事物,已经没有之前的迷茫和冲动了,从容不迫才是学习的最高境界。
1 开发方式选择
对于新手来说,可能会非常纠结这个工具的选择,因为在开发过程中难免会有找到好用的例程但是是基于其他平台这样的经历,但其实,不同的平台只不过是采用的编辑器和UI交互不一样罢了,内部的编译链接以及仿真等都是一致的(工具链可能不同,但结果是差不多的)。所以不同的平台有必要了解吗?还是有必要的,尤其是项目起步阶段,如果有一个完善的例程,直接换个平台先验证一下非常有利。
言归正传,通过查阅TI官方的资料,得知目前MSP430的开发方式主要有:TI官方出品的Code Composer Studio,即CCS;开源的Energia(基于GCC工具链实现的类似于Arduino的代码框架);和Keil齐名的IAR,不过是For MSP430。而MSP432由于是基于ARM内核(Cortex-M4F),所以可以使用Keil(需要先安装一个固件包)或者IAR(ForARM);或者其他ARM内核相关工具链的IDE;以及官方自己的CCS。
其中,由于最早Keil和IAR比较流行,而且当年TI自己的工具并不是特别完善,所以形成了早期用IAR开发MSP430、用Keil开发MSP432的大致格局。这也就是为什么在找MSP430的相关资料时,大都是各种古老的文档,配上一个IAR的例程。因为MSP430是16bit的RISV芯片,年代可以说比较久远了,然而现在大都是用32bit的单片机,所以感觉专业开发这些芯片的人并不是很多。
虽然说可以继续以IAR和Keil作为IDE主力,但随着TI官方的CCS不断完善,界面也越来越好看,加上eclipse本身的编辑器就比Keil/IAR要好用,而且还支持其他的如DSP系列芯片,所以还是有必要学习使用CCS,当然,Keil和IAR在后面也有介绍。下面分别阐述。
2 CCS和开发相关软件
这一节可能是最重要的了,直接关系到对整个开发框架的理解
以前年少无知,现在重新来审视这个CCS,就感觉CCS这个软件的组织架构就很奇怪,且听我来细细吐槽。
由于只需要适配自家的芯片,所以在软件安装阶段直接勾选对应的芯片型号即可,这个没啥毛病。比如,如果要开发430和432,那么可以勾选这两个:

如果还要开发28335/2812等DSP芯片,可以再加上这个:

TM320F2812/28335芯片竟然叫做C2000系列。。。
这里安装的包决定了后面新建项目时可以选哪些芯片型号。如果已经安装好了软件,还想要更新的话,可以再次运行安装程序来实现增加组件。
但是安装好之后,就会发现,虽然说可以新建项目了,也可以正常编译下载了,但只提供了寄存器式的代码!?可能也是历史原因,对于早期开发者来说,SDK可能就是指芯片的寄存器库。。。这是怪异点之一。显然,TI官方也意识到了这个问题,所以 为开发者再次封装了一下寄存器操作,命名为driverlib,和STM32的Pack包很像,也是一堆库函数封装加上一堆零散例程。但是怪的点又来了,可能是觉得只有库函数和例程不太够,为了让大家都来用我的芯片,我得同时照顾初学者和高级用户呀!所以在库里面加上整合度更高的例程以及一些文档资料,比如guid,get start之类的,还有一些高级的组件等等,又给取了一个名字,叫做xxxxWare,如MSP430Ware, MSP432Ware。有一说一,这个做法还是非常好的,但是就会让人感觉很绕——我在安装软件的时候都勾选了这个芯片,为什么不能一次性都给我装上?不说高级组件,至少基本的函数库得安排上呀。还只装一个寄存器库,如果开发者不知道有库函数这个东西,岂不是要一直都用寄存器开发?
可能是受STM32CubeIDE/CubeMX的影响,CCS也有一个下载安装并管理软件包的东西,叫做Resorce Explorer,就是点开之后可以访问官方的一个在线资源服务器,这个想法也非常好,即需要啥直接在软件里面下载即可,不需要就卸载,节约空间。然后第三个问题来了——这个resource explorer经常出问题,比如一直loading的,完全空白的,点开之后报错然后告诉你从一个使用手册上找解决方法的等等。其实大概率就是网络的问题,包括是否要挂代理都有可能影响,对国内用户可以说很不友好。另外,就是这个resource explorer的结构,我印象中之前刚接触CCS的时候目录很乱,现在不知道是不是有改进了,目录结构还是很明确的:

但是,相比于STM32每一个芯片系列就对应一个包那种非常清晰明了的结构,这个还是不够直观,比如Wireless Connectivity,mmWave xxxx,大概知道是适合做这类项目的芯片,但问题来了——为什么要在IDE里面放解决方案呢?为什么不能在放在官网,然后提供参考手册加例程,这不比放在这清晰?
当然,这个resource explorer我感觉最大的好处可能就是这些软件包里面有一些例程可以直接Import Project,不用自己挨个目录去找然后复制文件之类的操作。这可能是唯一的好处了吧,相比于单独安装这些软件(后面再说)。
另外,是关于这个软件版本的问题,为了找到一个可以同时开发MSP430/432以及TMS320F2812/28335的版本,我花了一整天的时间尝试各种版本,汇总一下我遇到的问题:
-
v10.4 安装C2000组件之后发现新建项目搜索不到28335,而且resource explorer点开是空白,遂放弃。
-
v20 是跨平台的版本,原来截至v12都是基于eclipse平台,而v20是eclipse的一个进阶版,叫做Theia,界面和VSCode非常相似,也可以安装VSCode下的一些插件(有兴趣可以看一下这个介绍)。新建项目时,可以搜到28335以及相关的开发板,但新建项目不成功,没有细究,而且无法搜索到MSP432P401,后来得知是这一系列芯片停产了,然后新版的软件也移除了对这个芯片的支持!?
多插一句:由于是在线的资源包,所以各个软件版本访问的都是同一个数据库,所以最新版的软件对这个支持得最好,旧版打不开好像也挺合理?
-
后来尝试换v12.6,听说v12.6还可以支持MSP432P401,但是在安装过程中进度条走到最后时出现了那个论坛很多人提问的
Child killed xxxx unknown signal,先后尝试装C盘(原来装D盘)、删除install-log、关闭Windows Defender等操作,均不好使,所以这个版本咋样也没试。 -
最后,还是决定降低版本,安装了v9.0,发现可以正常搜索到28335,然后resource explorer也相对正常(不能开启全局代理访问),但无法安装里面的那些软件包,报错
{"code":"ECONNRESET","errno":"ECONNRESET","syscall":"read"}
既然内部无法安装,那咱索性直接下载安装程序来单独安装,无非就是一堆文件嘛,大不了手动复制到项目里面。
- MSP430Ware.exe
- MSP432Ware.exe
- C2000Ware.exe
下载之后,建议还是安装到CCS同级的目录,如下所示

后面无论是在CCS里面使用,还是Keil/IAR,都可以从这里复制文件,所以关键就是理解这个Ware的文件结构。这里以MSP430为例,来看一下其目录结构

如前所述,这个MSP430Ware是在driverlib的基础上新增了一大堆东西,可以看到有dsplib(数字信号处理库),grlib(图形库)以及pmbus,smbus等通信相关的库。所以理论上需要啥都可以从这里复制。再来单独看一下driverlib:

这个结构是不是很眼熟?和STM32的固件库是差不多的,一个lib,加上一些例程,使用的时候先把lib复制到项目底下,然后参考例程的使用方式进行开发,这就是最有效最好的开发方式。

点开lib,可以发现,这里还区分的不同的芯片系列,但好像没有入门款G2系列?emmmm,可能是太基础了没有库吧,hh。但如果真想用我觉得也可以参考库组织的方式,毕竟很多寄存器还是一致的。

在example里面随意点开一个项目,发现都兼容了三种平台,还是非常完善的。
因为是外部安装,所以在CCS软件里面不会显示已经安装这个软件包,如果要使用的话,建议还是手动把文件复制过去,可以参考这篇文章介绍的方法,步骤还是很明确的。
小结一下
以上就是CCS平台下芯片开发的各个组件的作用和关系了,剩下的就是各个库和组件的使用了,好在都提供了文档和例程,认真研究,关键是需要时间和项目的磨练。
3 Keil开发MSP432
和上面一样,还是打开msp432ware里面的driverlib,先查看一下例程:

打开Keil项目文件,发现其使用了RTE里面的Core,这也是很多型号单片机的一个特点,非常合理,也少复制几个文件,这里也采用相同的方式。
首先,肯定是安装pack,这里推荐直接在Keil里面安装,相比于前面提到的resource explorer模糊的状态,这个pack installer的状态就非常确定——必须得科学上网。

安装好包之后,新建项目就可以选择对应的芯片型号了,接下来就是传统的那一套:建立文件夹和group并一一对应、在group中添加文件,这里重点介绍一下需要添加哪些文件。
-
core
这个driverlib里面好像是没有的,只提供了头文件,所以需要使用Keil的RTE:

关于RTE的介绍可以参考我之前的一篇博客
-
lib
这个没啥好说的,直接添加到项目中即可,然后记得设置C++包含路径 -
system文件
就是上面那张图提到的例程下的system_msp432p401r.c -
启动文件(.s)
也在例程下,startup_msp432p401r_uvision.s
到此就建立好了一个工程模板,记得在main函数中包含以下内容:
#include "msp.h" // 各种寄存器
#include "driverlib.h" // 库
另外,如果是使用那块经典的MSP432P401R LaunchPad板子,仿真可以直接选择DAP-Link,亲测可以正常下载和仿真。Reference
4 IAR for 430开发MSP430
由于没有找到适配IAR WorkBench 8.3的软件包,所以这里不再详细介绍,大抵和上面Keil开发类似。
【如何在一个IAR里面开发多种芯片】
已获取的消息:
- 7.12 对应WorkBench 8.0
- 8.10 目前最新版对应Workbench 9.1
所以我需要的版本大抵是7.20或者7.21
链接:https://updates.iar.com/?product=EW430 把后面的产品改成别的即可查看别的软件各版本情况
5 总结
本文主要是介绍了MSP430和MSP432在各个平台下的开发方式和基本开发流程,芯片外设和库的使用也只是起了一个头,后续如果有机会会再更新相关的外设使用以及实际代码编写等内容。
相关文章:
【单片机】MSP430MSP432入门
文章目录 0 前言1 开发方式选择2 CCS和开发相关软件3 Keil开发MSP4324 IAR for 430开发MSP4305 总结 0 前言 最近因为想学DSP,所以把之前卸载的CCS给装回来了,手头也还有之前电赛剩下的MSP430和MSP432的板子,由于年代久远,想着花点…...
linux中conda3安装
1、下载安装包 清华源-》https://mirrors.tuna.tsinghua.edu.cn/# 本文使用Anaconda3-2022.10,对应的下载路径-》https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh 2、将下载到的sh脚本放在Linux中用sh脚本解析器执行 …...
大模型自动提示优化(APO)综述笔记
自大型语言模型(LLMs)出现以来,提示工程一直是各种自然语言处理(NLP)任务中激发期望响应的关键步骤。然而,由于模型的快速进步、任务的多样性和相关最佳实践的变化,提示工程对最终用户来说仍然是…...
SOME/IP-SD -- 协议英文原文讲解6
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.3.1 E…...
每日Attention学习24——Strip Convolution Block
模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计,采用四个并行分支提取不同维度的信息相比于…...
ECharts graphic 的学习
ECharts 的 graphic 属性用于在图表中自定义图形元素(如文本、形状、图片等),实现更灵活的视觉效果增强或交互设计。以下是结合搜索结果的整理与分析: 一、graphic 的核心功能 自定义图形类型 支持多种基础图形元素,包…...
Springboot快速接入豆包大模型
背景 突然接到上面的通知,想要在系统里面接入各大模型的能力,我这边随机选了个豆包,然后快速对接了一下,很顺利,一把过,现在文档的快速入门还是很ok的,在此记录一下过程,给宝子们参考…...
DeepSeek的安全挑战和安全控制措施
本研究探讨了与 DeepSeek 相关的安全风险,为安全和风险管理领导者提供了有针对性的策略来缓解这些威胁,并提供了可行的措施来加强基于现有安全控制的 AI 保护。 主要发现 了解 DeepSeek 当前的安全状况。DeepSeek的采用激增暴露了关键的安全挑战&…...
掌握 JavaScript 旋转技术
1. 基本概念 1.1 角度与弧度 在讨论旋转之前,首先需要了解角度和弧度的概念: 角度:通常用度数表示,一个圆周为360度。弧度:数学上更常用的角度单位,一个圆周为2π弧度。 在JavaScript中,大多…...
力扣-贪心-968 监控二叉树
思路 用true和false作为放置了摄像头,会有局限,就是没法判断以下情况 所以要用数字代表三种状态 2:有覆盖1:有摄像头0:无覆盖 两个节点都被覆盖时,要返回0 两个节点有一个无覆盖就要返回1 两个…...
从零开始搭建你的第一个HBase项目:实战经验分享
从零开始搭建你的第一个HBase项目:实战经验分享 数据洪流中的你,准备好了吗? 在大数据时代,数据量的增长速度令人咋舌。面对海量的数据,如何高效地存储、管理和分析成为了一个亟待解决的问题。今天,我们将…...
计算机毕业设计SpringBoot+Vue.js智慧社区(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Elasticsearch 的分布式架构原理:通俗易懂版
Elasticsearch 的分布式架构原理:通俗易懂版 Lucene 和 Elasticsearch 的前世今生 Lucene 是一个功能强大的搜索库,提供了高效的全文检索能力。然而,直接基于 Lucene 开发非常复杂,即使是简单的功能也需要编写大量的 Java 代码&…...
每日一题之混乱的草稿纸
问题描述 一年一度的蓝桥杯省赛即将开赛,小蓝卧薪尝胆,目标直指省一。 为了实现这个宏伟目标,小蓝偷偷准备了一份 NN 行的代码模板,分别写在 NN 张草稿纸上(每张草稿纸上都写有一行代码,并用 11 到 NN 的…...
【redis】数据类型之hyperloglog
Redis的HyperLogLog(HLL)是一种高效的概率数据结构,也是一种基于字符串的数据结构,用于估计大数据集的唯一元素数量(基数统计)。它通过极低的内存占用(约 12KB)实现接近线性的时间复…...
在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间
在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration,这个对象里面有compareDate字段,刚好表格查询的对象也是FakeRegistration,所以表格展示的时间就是刚才…...
Chat2File - DeepSeek Chat 导出助手:解决deepseek对话导出问题,提升开发效率
Chat2File - DeepSeek Chat 导出助手:解决deepseek对话导出问题,提升开发效率 大家好久不见,最近这段时间一直在开发一些项目,今天给大家带来一款刚在 Edge 成功上线的实用插件 ——Chat2File - DeepSeek Chat 导出助手。作为开发…...
MEMS光纤麦克风传感器特色解析
概念原理 光纤麦克风是利用光纤作为传光介质和传感元件,将声音信号转换为光信号,并通过对光信号的检测和处理来获取声音信息的设备。它区别于传统基于电信号转换的麦克风,利用光的特性来实现声音的传感与传输。 原理:声音引起敏…...
LLC谐振变换器恒压恒流双竞争闭环simulink仿真
1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系代为转换)针对全桥LLC拓扑,利用Matlab软件搭建模型,分别对轻载…...
山东大学软件学院ai导论实验之生成对抗网络
目录 实验目的 实验代码 实验内容 实验结果 实验目的 基于Pytorch搭建一个生成对抗网络,使用MNIST数据集。 实验代码 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data…...
C++ Qt常见面试题(2):QT中的文件流(QTextStream)和数据流(QDataStream)的区别
在 Qt 中,QTextStream 和 QDataStream 是两种常用的流类,用于通过文件或其他 I/O 设备(如网络、内存)读写数据。虽然它们都可以用来操作数据,但它们的设计目标和使用场景不同。以下是它们的主要区别和适用场景的详细说明: 1. QTextStream:文本流 QTextStream 是一种专门…...
入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】
🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网…...
【论文解读】《C-Pack: Packed Resources For General Chinese Embeddings》
论文链接:https://arxiv.org/pdf/2309.07597 本论文旨在构建一套通用中文文本嵌入的完整资源包——C-Pack,解决当前中文文本嵌入研究中数据、模型、训练策略与评测基准缺失的问题。论文主要贡献体现在以下几个方面: 大规模训练数据…...
Cramér-Rao界:参数估计精度的“理论底线”
Cramr-Rao界:参数估计精度的“理论底线” 在统计学中,当我们用数据估计一个模型的参数时,总希望估计结果尽可能精确。但精度有没有一个理论上的“底线”呢?答案是有的,这就是Cramr-Rao界(Cramr-Rao Lower …...
ClickHouse 的分区、分桶和分片详解
在大数据场景下,数据的存储和查询效率至关重要。ClickHouse 作为一款高性能的列式存储数据库,提供了多种数据组织方式来优化存储和查询,其中最常见的就是 分区(Partition)、分桶(Sampling)、分片…...
【操作系统、数学】什么是排队论?如何理解排队论?排队论有什么用处?Queueing Theory?什么是 Little’s Law?
排队论(Queueing Theory)是研究系统中排队现象的数学理论,旨在分析资源分配、服务效率及等待时间等问题。它广泛应用于计算机科学、通信网络、交通规划、工业工程等领域。 【下文会通过搜集的资料,从各方面了解排队论,…...
2209. 用地毯覆盖后的最少白色砖块
2209. 用地毯覆盖后的最少白色砖块 题目链接:2209. 用地毯覆盖后的最少白色砖块 代码如下: class Solution { public:int minimumWhiteTiles(string floor, int numCarpets, int carpetLen) {vector<vector<int>>memo (numCarpets 1, vec…...
DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级
在近两年由AI引发的生产力革命的背后,一场关乎数字世界秩序的攻防战正在上演:AI生成的深度伪造视频导致企业品牌声誉损失日均超千万,批量生成的侵权内容使版权纠纷量与日俱增,黑灰产利用AI技术持续发起欺诈攻击。 与此同时&#…...
(0)阿里云大模型ACP-考试回忆
这两天通过了阿里云大模型ACP考试,由于之前在网上没有找到真题,导致第一次考试没有过,后面又重新学习了一遍文档才顺利通过考试,这两次考试内容感觉考试题目90%内容是覆盖的,后面准备分享一下每一章的考题,…...
0.【深度学习YOLOV11项目实战-项目安装教程】(图文教程,超级详细)
目录 前言一、安装Pycharm(安装过Pycharm的跳过这一步)1.1 点击下述链接直接跳转到教程页面进行安装 二、安装Anaconda(安装过Anaconda的跳过这一步)2.1 点击下述链接直接跳转到教程页面进行安装 三、后续安装教程(有N…...
