幸运时时彩平台

MSP430G2-LaunchPad简明教程03[创建一个MSP430工程]

2020-06-16来源: eefocus关键字:MSP430G2  LaunchPad  MSP430工程]

在本章节中笔者将向大家介绍如何基于Makefile创建一个MSP430开发工程。


代码编译过程

由于本教程没有采用常见的IDE的途径进行代码编写调试,而是由开发者自己编写一个Makefile实现项目文件管理的功能,因此需要对MSP430的编译过程有一定的了解。


作为一个标准的GNU C交叉编译器,编译的过程同样遵循【.c文件】--编译--【.o文件】--链接--【可执行的二进制文件】。在MSP430单片机上的可执行文件一般为elf格式,感兴趣的同学可以自行了解该文件格式,其功能作用与51单片机上常见的hex格式文件和飞思卡尔单片机上常见的bin文件类似。


幸运时时彩平台由.c格式的源码文件到.o格式的目标过程称作链接,在这一个过程中需要借助mspgcc(即上一章节中env.sh导出的$CC)完成。在此提供一个简单的示例。新建一个main.c文件,写入如下内容:


int main(void)

{

    return 0;

}

接着在自身的终端(Windows平台下即Git Bash或Mingw)上敲入如下编译命令:


Admin@RDOFWLHXI6YEJMO /cygdrive/f/WORKSPACE/msp430

幸运时时彩平台$ $CC -mmcu=msp430g2553 -mhwmult=none -std=gnu99 -c main。c -o main。o

幸运时时彩平台执行上述命令若无回显,表明编译成功,此时编译器将在当前目录下生成一个.o文件。在编译阶段所使用的编译参数与我们平常使用gcc编译器编译可执行文件并没有什么区别,仅增加了几个msp430特有的Machine Option(即以-m开头的编译器选项),详情可参考GCC官方手册中的相关说明,在此做简要的解释:


编译选项 描述

--mmcu=msp430g2553 指定msp430的型号。指定型号后编译器将在编译阶段隐式添加相关的型号宏,从而使得开发者可直接使用;此外,该选项还将影响编译器所使用的指令集(430 ISA/430X ISA)。--mmcu=msp430g2553表示目标MCU型号为msp430g2553,即小红板默认安装的MCU。

-mhwmult=none 表明无硬件乘法器

-std=gnu99 指定采用的C语言语法标准版本

-c 仅进行编译,不进行链接

-o [FILENAME] 指定输出文件名称为FILENAME

完成代码编译后还要将生成的中间目标文件链接成一个可执行文件,完整的构建过程才算完成。mspgcc工具链对此的处理流程与其他gcc工具链没有任何区别,也是通过gcc编译器调用链接器ld完成(Q:为什么不直接使用ld进行链接?A:使用gcc编译的时候往往需要链接某些libc、libgcc相关的文件,若直接使用ld进行链接需要手动添加大量编译参数,十分繁琐)。读者可在上一命令行的基础上尝试执行如下命令行


幸运时时彩平台Admin@RDOFWLHXI6YEJMO /cygdrive/f/WORKSPACE/msp430

$ $CC -mmcu=msp430g2553 $LDFLAGS main.o -o main.elf

在链接阶段的编译参数相比编译少了许多,但同样需要带上--mmcu=msp430g2553这个选项,否则编译器无法确定使用哪个链接脚本文件进行链接。所谓的链接脚本是一个用于指定链接规则的脚本文件,链接器的工作实际上就是执行该链接脚本;链接脚本一般由工具链自带,对于MSP430来说一般不需要开发者对其进行修改;链接脚本在嵌入式领域的主要作用为指定CPU/MCU的存储空间分布。mspgcc工具链的链接脚本文件均放置于include目录下,该路径并不在环境变量$PATH中,因此上一教程的env.sh导出了一个$LDFLAGS环境变量用于在链接阶段使用-L参数指定链接脚本的所在路径。链接阶段结束之后编译器将在当前目录下生成一个.elf文件即我们最终所需的可执行文件。


代码烧写

代码的烧写需要基于mspdebug这一工具实现,这一工具同样是在命令行环境下使用的,其基本的命令格式为


mspdebug [options] [command ...]

其中的是必填项目,用于指定下载器的种类。先前在网上参考的教程均是选择rf2500进行烧写的,然而笔者多次尝试未果,机智地改为tilib方才烧写成功!(P.S.:这一过程浪费了大量的时间,实在是坑。。)


以将上文编译好的main。elf文件烧录至小红板为例,代码烧写的基本命令为(其中的$MSPDEBUG变量也是由上篇教程的env。sh脚本封装的变量)


Admin@RDOFWLHXI6YEJMO /cygdrive/f/WORKSPACE/msp430

$ $MSPDEBUG tilib 'prog main。elf'

该命令亦可分步执行,即先进入mspdebug自身的控制台界面,再输入下载指令


Weilun@RDOFWLHXI6YEJMO /cygdrive/f/WORKSPACE/msp430

幸运时时彩平台$ $MSPDEBUG tilib

MSPDebug version 0.22 - debugging tool for MSP430 MCUs

Copyright (C) 2009-2013 Daniel Beer

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

MSP430_GetNumberOfUsbIfs

MSP430_GetNameOfUsbIf

Found FET: HID0268:COM3

MSP430_Initialize: HID0268:COM3

Firmware version is 20409001

MSP430_VCC: 3000 mV

MSP430_OpenDevice

MSP430_GetFoundDevice

Device: MSP430G2xx3 (id = 0x00de)

2 breakpoints available

MSP430_EEM_Init

Chip ID data: 25 53

 

Available commands:

    =           erase       isearch     power       save_raw    simio

    alias       exit        load        prog        set         step

    break       fill        load_raw    read        setbreak    sym

    cgraph      gdb         md          regs        setwatch    verify

    delbreak    help        mw          reset       setwatch_r  verify_raw

    dis         hexout      opt         run         setwatch_w

 

Available options:

    color                       gdb_loop

    enable_bsl_access           gdbc_xfer_size

    enable_locked_flash_access  iradix

    fet_block_size              quiet

    gdb_default_port

 

Type "help " for more information.

Use the "opt" command ("help opt") to set options.

Press Ctrl+D to quit.

 

(mspdebug) prog main。elf

prog main.elf

Erasing...

Programming...

Writing    2 bytes at fffe [section: __reset_vector]...

Writing    4 bytes at c000 [section: 。rodata2]。。。

Writing   22 bytes at c004 [section: .text]...

Done, 28 bytes total

幸运时时彩平台从上文打印的输入日志中还可以看到mspdebug工具提供的其他控制台命令,例如break/delbreak(增删断点)、gdb(创建一个gdb server)、reset(复位)等。


编写一个简单的Makefile

有了上个章节的基础,我们就可以自己动手编写一个Makefile。但可能有不少读者朋友并不喜欢Makefile的语法或自己手动书写Makefile,甚至完全没接触过Makefile,本教程在此提供一个精简的Makefile模板可直接使用(使用限制:源码、中间文件、最终目标文件均在同一目录下,即flat型目录结构),但还是建议大家能够书写一个属于自己的Makefile。本教程在此不会对Makefile的语法作展开讲解,但Makefile中均配以重要的注释供读者理解,该示例Makefile的主体思路为封装编译参数->指定编译依赖规则(这一过程中使用了模式匹配以应对多个。c文件生成一个最终目标文件的场景;此外还引入了。d依赖文件完善依赖规则)->添加非编译操作的伪目标。


# 配置编译工具链

CROSS_COMPILE ?= msp430-elf-

CC            ?= $(CROSS_COMPILE)gcc

MSPDEBUG      ?= mspdebug

 

# 配置编译参数

# 定义目标MCU型号与调试驱动

MCU           := msp430g2553

DEBUG_DRIVER  := tilib

# CFLAGS为编译阶段参数

#  @note: 此处必须加上CFLAGS变量添加由env.sh导出的编译参数,否则可能会出现

#         头文件找不到的报错(下方的LDFLAGS同理)

CFLAGS  := -mmcu=$(MCU) -mhwmult=none -MMD -std=gnu99 $(CFLAGS) -c

# LDFLAGS为链接阶段参数,将影响编译器调用链接器的具体方式

LDFLAGS := -mmcu=$(MCU) $(LDFLAGS)

# 定义目标文件名称

TARGET  := main

ELF     := $(TARGET).elf

SRCS    := $(wildcard *。c)

DEPS    := $(SRCS:.c=.d)

OBJS    := $(SRCS:。c=。o)

 

幸运时时彩平台# 定义all目标,最终需要生成一个elf格式的二进制文件

all: $(ELF)

 

幸运时时彩平台# .elf文件由.o文件链接生成

$(ELF): $(OBJS)

幸运时时彩平台 $(CC) $(LDFLAGS) $^ -o $@

 

幸运时时彩平台# 。o文件由。c文件编译生成

%.o: %.c

$(CC) $(CFLAGS) $< -o $@

 

。PHONY: clean flash mostlyclean

# 清除中间文件与目标文件

clean:

rm -f *.elf *.o

 

# 烧写程序

flash:

$(MSPDEBUG) $(DEBUG_DRIVER) --force-reset "prog $(ELF)"

 

# 在clean操作的基础上清除.d文件

mostlyclean:

rm -f *.d *.elf *.o

 

# 引入.d依赖文件

-include $(DEPS)

该示例Makefile的基本用法为


命令 功能

幸运时时彩平台make 编译并链接生成可执行文件

make clean 清除编译过程中产生的中间文件与最终目标文件

make mostlyclean 在make clean的基础上清除。d依赖文件

make flash 烧写最终目标文件至单片机

关键字:MSP430G2  LaunchPad  MSP430工程] 编辑:什么鱼 引用地址:http://news.sonata9.com/mcu/ic500386.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:幸运时时彩平台MSP430F5529波特率的设定,
下一篇:MSP430学习笔记1-I/O端口

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430G2转换结果数据类型
以下是程序,软件用的IAR:#include "io430.h" #include "dandao_duocai.h" #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define dataout P2OUT unsigned int ADC10_Result[100]; int d,c;void cheek_clock() { BCSCTL3_bit.LFXT1S0
发表于 2020-05-20
MSP430G2-LaunchPad简明教程02
发环境的准备包括驱动程序与开发工具两部分,本教程以Win7平台为例,Linux平台下的开发也可参考。驱动程序小红板自带一个免驱的USB仿真器供调试与程序烧写用途,以及一个最高支持9600bps波特率的application UART的通信接口。为避免后续开发中的奇怪问题,建议安装针对后者的驱动。驱动的下载地址为MSP-EXP430G2 LaunchPad Driver,解压后可得430cdc.cat(驱动数字签名)、430cdc.inf与LaunchPad_Driver.exe三个文件。将小红板使用USB数据线与PC连接后,在设备管理器中会产生3个新设备,其中的MSP430 Application UART是需要安装上述驱动方可
发表于 2020-03-06
<font color='red'>MSP430G</font>2-LaunchPad简明教程02
使用MSP430G2 LaunchPad开发板连接步进电机的方法
在本篇文章中,我们将介绍如何使用MSP430 LaunchPad开发板连接一个步进电机。 MSP-EXP430G2是德州仪器(TI)提供的开发工具,又名LaunchPad,用于学习和练习如何使用他们提供的微控制器。该开发板属于MSP430产品线,我们可以使用它对所有MSP430系列微控制器进行编程。如果您是MSP430的新手,请查看MSP430 LaunchPad的入门教程。所需的材料●    MSP430 LaunchPad开发板●    35BYJ46或28-BYJ48步进电机●    ULN2003驱动芯片●    连接导线● 
发表于 2019-10-23
使用<font color='red'>MSP430G2</font>幸运时时彩平台 LaunchPad开发板连接步进电机的方法
使用MSP430G2 LaunchPad开发板驱动伺服电机的方法
在本篇文章中,我们将主要介绍一些有关伺服电机的基础知识以及如何将伺服电机与MSP430G2 LaunchPad开发板进行连接。 MSP-EXP430G2是德州仪器提供的开发工具,也称为LaunchPad,用于学习和实践如何使用其微控制器。该开发板属于MSP430产品线类别,我们可以对所有MSP430系列微控制器进行编程。伺服电机和PWM在详细讨论之前,首先我们应该了解伺服电机。伺服电机包含了直流电机、位置控制系统和转动机构。伺服电机在现代世界有很多应用,因此它们有不同的形状和尺寸。我们将在本篇文章中使用的是SG90伺服电机,它是最流行且最便宜的电机之一。 SG90是一款180度伺服器。所以用这个伺服我们可以将轴从0-180度定位
发表于 2019-10-23
使用<font color='red'>MSP430G2</font> LaunchPad开发板驱动伺服电机的方法
使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
本篇文章是MSP430G2 LaunchPad系列教程的一部分,我们正在学习使用德州仪器的MSP430G2 LaunchPad开发板。到目前为止,我们已经学习了开发板的基础知识,并介绍了如何读取模拟电压以及使用MSP430G2进行连接LCD等。现在我们继续了解MSP430G2单片机中的PWM模块。我们将通过改变电位器来控制LED的亮度,因此,将电位器连接到MSP430的模拟引脚,然后读取其模拟电压,因此建议在继续学习之前先了解ADC的文章。什么是PWM信号?脉宽调制(PWM)是控制电路中最常用的数字信号。该信号以预定的时间和速度设置为高电平(3.3v)和低电平(0v)。信号保持高电平的时间称为“开启时间”,信号保持低电平的时间称为
发表于 2019-10-22
使用<font color='red'>MSP430G2</font>单片机的PWM模块控制LED指示灯的亮度
使用MSP430G2 LaunchPad开发板连接LCD液晶显示屏的方法
本篇文章是我们学习使用Energia IDE开发环境编程MSP430G2 LaunchPad的教程系列中的第三篇教程。在上一篇教程中,我们学习了如何控制MSP430G2 LaunchPad开发板上的数字输入和输出引脚。在本教程中,我们将学习如何将LCD与开发板连接,以便我们可以显示一些有用的信息。我们在这个项目中使用的LCD是最常用的16×2点阵式液晶显示器,也就是所谓的字符显示器。我们大多数人都会通过公共PCO或其他电子项目来接触到这一点。像这样的显示对于我们将来的教程中显示数据和其他调试信息将非常方便。由于提供了库,将该LCD与MSP430连接起来非常简单。所以让我们开始学习吧!所需材料●    德州仪器
发表于 2019-10-22
使用<font color='red'>MSP430G2</font> LaunchPad开发板连接LCD液晶显示屏的方法
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
幸运时时彩 上海时时乐 北京pk10 一分时时彩官网 欢乐生肖网上哪里买 500彩票网 北京pk10 亿信彩票官方网址 幸运时时彩平台 上海时时乐