MSP432E4学习笔记:工程创建

由于Ti是电赛的大金主,在比赛中使用Ti的片子会带来优势。正好手头有一块MSP432E401Y(官板真是好看),所以打算趁着周六强制考勤时间去入门一下。

一,下载必要软件包

Ti为MSP430E4提供了SDK。但是Ti官网的命名让人十分迷惑,关于MSP432可以在Ti官网找到两个包:MSP432WARE,SIMPLELINK-MSP432E4-SDK.经过实测,其中SIMPLELINK-MSP432E4-SDK是MSP432E4的SDK,另外一个是MSP432P的SDK(SBTi)。

image-20230325171007690

下载后直接安装,安装完成后会自动打开版本手册和快速开始指导,其中快速指导中写了如何创建新的工程,包括使用CCS,IAR,Keil。我们这里使用Keil进行开发。

image-20230325171337835

  • Download and Install Keil uVision 5.23
  • Install the TexasInstruments::MSP432E4xx_DFP pack
  • Install the ARM::CMSIS pack

可以看到,我们还需要下载MSP432E4的keil PACK

打开keil,进入Pack Installer。

image-20230325171549220

在Devices中找到Ti的MSP432E4。

image-20230325171650189

点击后,在右侧可以看见pack包,可以选择直接在软件中安装(很慢),也可以选择自己到网页上下载。

image-20230325171903190

这里为了快速下载,我们点击Device中芯片型号后面的蓝色链接打开keil官网,如下图,点击Download按钮直接下载Pack,下载完成后点击安装。

image-20230325172037402

完成上述步骤后开发环境就配置好了,打开SDK安装目录下的点灯例程:examples\nortos\MSP_EXP432E401Y\driverlib\blinky,打开工程,编译。

将MSPE401Y开发板连接上电脑,这时电脑应该会自动配置驱动,配置完成后点击下载程序,就可以看见灯闪了。

image-20230325173048865

二,创建新的工程

(一)通过空工程创建

Quick_Start中,Ti告诉我们不要使用Keil自带的创建工程新建新的工程,要求基于其中的例程进行创建,也就是直接使用Ti给你创建好的工程进行开发。

image-20230325174000153

Do not use the New Project Creation Wizard

  • Start with one of the example projects or empty project template shipped inside the SDK. Each software component in the SDK comes with its own set of examples. If your project depends on multiple TI provided software libraries, start from the empty template then add the necessary components into your projects.
  • Import one of the empty project template shown below to your IDE and start your application from there. All the necessary include paths and SDK specific defines if any are already part of the Empty Project Template

因此,直接打开:examples\nortos\MSP_EXP432E401Y\driverlib\empty空工程进行就可以进行开发了

(二)使用Keil创建工程

由于之前刚刚学会了如何脱离Cube创建STM32的工程,现在想自己实践一下亲自创建,所以打算手动创建一下Keil工程(浑身反骨)。


我们先打开编译过的blinky工程,首先看一下它的目录结构:

image-20230325175033484

其中Blinky.c是类似于STM32中**main.c文件**,由用户创建。

打开system_msp432e401y,c观察,发现是和时钟频率有关的函数,很像STM32中的文件。

其他四个文件夹分别对应四种不同的开发环境,这里我们打开keil文件夹:

image-20230325180939442

红框中的文件时打开keil编译后产生的,不用管。

.uvoptx结尾的文件是keil的工程,创建工程时建立。

.sct工程是Ti提供的链接文件,具体用途可以百度,但是我们发现Objects中也有一个sct文件,这是keil编译时自动生成的,上图目录中的sct文件其实没用(但是为了保证工程的正确性,最好还是使用Ti提供的sct文件)。

startup_msp432e401y_uvision.s就不用说了吧,经典的启动文件


那么工程文件结构就看完了,是不是发现少了什么?对,各种奇怪的头文件不见了,然后还没有库函数文件。这些东西在哪呢?

我们先打开工程文件,看一下keil的配置:

image-20230325183509920

工程目录中可以看到之前在目录中看见的文件,这里多出来一个.a文件,经过查找,发现在simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\driverlib\lib\keil\m4f中。

再查看头文件,发现在simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4

以及simplelink_msp432e4_sdk_4_20_00_12\source\third_party\CMSIS\Include

可以找到

那么到这里就可以知道了,主要的库文件都在E:\TI\simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4下面,接下来就可以开始创建工程了。


1,创建工程

打开keil,点击新建工程,选择芯片为:MSP432E401Y

image-20230325185544376

新建完成后,我们将SDK安装目录\source\ti\devices\msp432e4打开,准备复制文件。

2,复制启动文件

首先点开startup_system_files文件夹,将system_msp432e401y.ckeil文件夹中的startup_msp432e401y_uvision.s复制到工程目录下(我复制到了目录中的startup文件夹下)

image-20230325190223154

3,复制连接文件

点开linker_files\keil文件夹,将MSP432E401Y.sct文件复制到工程目录。

image-20230325191029677

4,复制头文件

打开simplelink_msp432e4_sdk_4_20_00_12\source文件夹,可以看到如下文件夹:

image-20230325200005760

  • ti:包含了Ti的各种文件,包括寄存器地址,基本驱动函数库
  • third_party:第三方的各种文件,包括ARM核的相关操作函数,fatfs文件系统,DSP等库

这里我们需要添加这两个文件夹的东西。

首先是ARM内核和编译器的文件:

打开simplelink_msp432e4_sdk_4_20_00_12\source\third_party\CMSIS\Include,根据我们使用的芯片(M4内核),以及编译器(gcc)选择添加头文件:

  • cmsis_armcc.h
  • cmsis_compiler.h
  • cmsis_version.h
  • core_cm4.h
  • mpu_armv7.h

然后是Ti的库和启动函数文件

打开simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\inc

inc文件夹复制到工程目录。

image-20230325191324108

  • 其实不必全部复制,msp.hmsp432.h文件其实都是根据芯片选型定向到msp432e4xx.h。但是为了程序兼容性,还是一起复制。

5,复制driverlib文件

点开driverlib文件夹,里面东西很多,都是基本的驱动库。

image-20230325191647793

  • inc定义了基本的寄存器基地址,MASK等等
  • xxx.h/xxx.c则是基本驱动库
  • lib包含了已经编译好的上述基本驱动库

这里可以选择通过源码添加(直接添加源文件),也可以添加已经编译好的文件(这样在调试时就不好看寄存器操作了),为了方便就直接添加lib。

首先将这个文件夹的头文件复制到工程目录(不包括inc中的文件),然后复制lib中相应的.a文件到工程目录。

image-20230325193331064

6,设置keil

点开keil的工程设置,选择C/C++选项,添加Include路径:

  • 工程中的inc文件
  • driverlib中的inc文件

image-20230325193507380

image-20230325193816922

然后选择Link选项,添加sct文件。

image-20230325194106624

之后选择Debug选项,将调试器改为CMSIS-DAP:

image-20230325194339299

然后添加工程文件:

image-20230325194736608

然后修改文件中头文件的路径,让引用指向本地工程文件夹中的文件。

image-20230325195628389

  • .a文件需要设置为库文件:

    image-20230325195213524

image-20230325195306814

7,编译,下载

将点灯工程的代码复制到我们新建的工程中,编译下载,可以看见成功运行。

三,后记

相比于CubeMX创建工程,这个创建是真的麻烦,比STM32不用Cube创建都要麻烦。所以还是听官方的话吧,乖乖直接复制空工程开发。

但是这样麻烦还是有回报的:Ti的库文件基本都在本地工程中可以随意修改而不怕影响到其他工程。不然全部工程共用一个库,肯定会有一堆问题。

其实Ti提供的东西还挺多的,SDK包含了DSP,文件系统,GUI等一堆东西,还有例程,但是这些东西藏的好深,没什么说明。