MSP430单片机原理.docx

上传人:b****7 文档编号:9042967 上传时间:2023-02-02 格式:DOCX 页数:28 大小:191.50KB
下载 相关 举报
MSP430单片机原理.docx_第1页
第1页 / 共28页
MSP430单片机原理.docx_第2页
第2页 / 共28页
MSP430单片机原理.docx_第3页
第3页 / 共28页
MSP430单片机原理.docx_第4页
第4页 / 共28页
MSP430单片机原理.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

MSP430单片机原理.docx

《MSP430单片机原理.docx》由会员分享,可在线阅读,更多相关《MSP430单片机原理.docx(28页珍藏版)》请在冰豆网上搜索。

MSP430单片机原理.docx

MSP430单片机原理

第2章MSP430单片机原理与C语言基础

MSP430系列超低功耗单片机有200多种型号,TI公司用3~4位数字表示其型号。

其中第一位数字表示大系列,如MSP430F1xx系列、MSP430F2xx系列、MSP430F4xx系列、MSP430F5xx系列等。

在每个大系列中,又分若干子系列,单片机型号中的第二位数字表示子系列号,一般子系列越大,所包含的功能模块越多。

最后1~2位数字表示存储容量,数字越大表示RAM和ROM容量越大。

430家族中还有针对热门应用而设计的一系列专用单片机。

如SP430FW4xx系列水表专用单片机、MSP430FG4xx系列医疗仪器专用单片机、MSP430FE4xx系列电能计量专用单片机等。

这些专用单片机都是在同型号的通用单片机上增加专用模块而构成的。

最新的MSP430型号列表可以通过TI公司网站下载。

在开发单片机应用系统时,第一步就是单片机的选型,选择合适的单片机型号往往就能事半功倍。

单片机选型基本方法是选择功能模块最接近项目需求的系列,然后根据程序复杂程度估算存储器和RAM空间,并留有适当的余量,最终决定选用的单片机型号。

本章节以MSP430F249单片机为学习目标,介绍单片机的基本结构和工作原理,读者可以举一反三、触类旁通,而不必每种型号都去学习却无法深入掌握。

2.1MSP430F249单片机基本结构与原理

2.1.1MSP430F249的主要结构特点

●供电电压范围1.8V~3.6V。

●超低功耗:

活动状态270uA(1MHz,2.2V);待机模式0.3uA;关机模式0.1uA。

●16位RISC精简指令集处理器。

●时钟系统:

多种时钟源,可灵活使用。

时钟频率达到16MHz;具有内部振荡器;可外接32kHz低频晶振;外接时钟输入。

●12位A/D转换器,内部参考电压,采用保持电路。

●16位定时器A,3个捕获/比较寄存器。

●16位定时器B,7个捕获/比较寄存器。

●4个通用串口:

USCI_A0和USCI_A1、USCI_B0和USCI_B1(I2C、SPI)。

●60kB+256B的flash程序存储器,2kB的RAM数据存储器。

●64引脚QFP封装。

MSP430F249单片机的芯片封装形式如图2.1所示,各引脚的功能描述如表2-1所列。

2.1.2MSP430F249单片机的基本结构

MSP430F24x系列单片机功能结构示意图如图2.2所示。

(1)CPU简介

MSP430单片机的CPU为16位RISC精简指令集的处理器,只有27条正交汇编指令和7种寻址方式。

RISC处理器基本上是为高级语言所设计的,编译程序对正交指令系统很容易做到最优化,利于产生高效紧凑的代码。

MSP430CPU中集成了16个16位通用寄存器R0~R15,其中R0~R3分别复用为程序指针PC、堆栈指针SP、状态寄存器SR和常数发生器CG1/CG2。

这些寄存器之间的操作只需要一个CPU周期。

1)程序计数器(PC指针)也就是CPU专用寄存器R0,PC指针是一个16位寄存器,可以寻址64kB的空间。

MSP430单片机的指令长度以字(16位)为最小单位,而程序存储器单元以字节(8位)为单位,所以PC的值总是偶数。

图2.1MSP430F249单片机引脚图

图2.2MSP430F24x系列单片机功能结构示意图

 

表2-1MSP430F249单片机引脚描述

引脚名称

引脚号

说明

AVCC

64

模拟电源正端,仅用于ADC12模块

AVSS

62

模拟电源负端,仅用于ADC12模块

DVCC

1

电源正端,1.8~3.6V

DVSS

63

电源负端

P1.0/TACLK/CAOUT

12

通用数字I/O/定时器_A时钟信号输入/比较器A输出

P1.1/TA0

13

通用数字I/O/定时器_A比较out0输出或捕获CCI0A输入/BSL

P1.2/TA1

14

通用数字I/O/定时器_A比较out1输出或捕获CCI1A输入

P1.3/TA2

15

通用数字I/O/定时器_A比较out2输出或捕获CCI2A输入

P1.4/SMCLK

16

通用数字I/O/SMCLK输出

P1.5/TA0

17

通用数字I/O/定时器_A比较out0输出

P1.6/TA1

18

通用数字I/O/定时器_A比较out1输出

P1.7/TA2

19

通用数字I/O/定时器_A比较out2输出

P2.0/ACLK/CA2

20

通用数字I/O/ACLK输出/比较器A输入

P2.1/TAINCLK/CA3

21

通用数字I/O/定时器A时钟信号INCLK/比较器A输入

P2.2/CAOUT/TA0/CA4

22

通用数字I/O/定时器A捕获CCI0B输入/比较器A输出/BSL接收/比较器A输入

P2.3/CA0/TA1

23

通用数字I/O/比较器A输入/定时器A比较out1输出

P2.4/CA1/TA2

24

通用数字I/O/比较器A输入/定时器A比较out2输出

P2.5/ROSE/CA5

25

通用数字I/O/DCO外部电阻输入/比较器A输入

P2.6/ADC12CLK/CA6

26

通用数字I/O/ADC12转换时钟/比较器A输入

P2.7/TA0/CA7

27

通用数字I/O/定时器A比较out0输出//比较器A输入

P3.0/UCB0STE/UCA0CLK

28

通用数字I/O/USCIB0从模式传输允许/USCIA0时钟

P3.1/UCB0SIMO/UCB0SDA

29

通用数字I/O/USCIB0从模式输入/主模式输出SDA

P3.2/UCB0SOMI/UCB0SCL

30

通用数字I/O/USCIB0从模式输出/主模式输入SPI

P3.3/UCB0CLK/UCA0STE

31

通用数字I/O/USCIB0时钟/USCIA0从模式传输允许

P3.4UCA0TXD/UCA0SIMO

32

通用数字I/O/UART模式USCIA0数据输出/SPI模式SIMO

P3.5/UCA0RXD/UCA0SOMI

33

通用数字I/O/

P3.6/UCA1TXD/UCA1SIMO

34

通用数字I/O/UART模式USCIA1数据输出/SPI模式SIMO

P3.7/UCA1RXD/UCA1SOMI

35

通用数字I/O/UART模式USCIA1数据输入/SPI模式SOMI

P4.0/TB0

36

通用数字I/O/定时器_B比较out0输出或捕获CCI0A/B输入

P4.1/TB1

37

通用数字I/O//定时器_B比较out1输出或捕获CCI1A/B输入

P4.2/TB2

38

通用数字I/O//定时器_B比较out2输出或捕获CCI2A/B输入

P4.3/TB3

39

通用数字I/O//定时器_B比较out3输出或捕获CCI3A/B输入

P4.4/TB4

40

通用数字I/O//定时器_B比较out4输出或捕获CCI4A/B输入

P4.5/TB5

41

通用数字I/O//定时器_B比较out5输出或捕获CCI5A/B输入

P4.6/TB6

42

通用数字I/O//定时器_B比较out6输出或捕获CCI6A/B输入

P4.7/TBCLK

43

通用数字I/O/定时器B时钟输入

P5.0/UCB1STE/UCA1CLK

44

通用数字I/O/USCIB1从模式传输允许/USCIA1时钟

P5.1/UCB1SIMO/UCB1SDA

45

通用数字I/O/USCIB1SPI模式SIMO/I2C模式SDA

P5.2/UCB1SOMI/UCA1SCL

46

通用数字I/O/USCIB1SPI模式SOMI/I2C模式SCL

P5.3/UCB1CLK/UCA1STE

47

通用数字I/O/USCIB1时钟/USCIA1从模式传输允许

P5.4/MCLK

48

通用数字I/O/MCLK输出

P5.5/SMCLK

49

通用数字I/O/SMCLK输出

P5.6/ACLK

50

通用数字I/O/ACLK输出

P5.7/TBOUTH/SVSOUT

51

通用数字I/O/定时器TB0~TB6PWM输出高阻态选择位/SVS比较器输出

P6.0/A0

59

通用数字I/O/模拟量输入A0

P6.1/A1

60

通用数字I/O/模拟量输入A1

P6.2/A2

61

通用数字I/O/模拟量输入A2

P6.3/A3

2

通用数字I/O/模拟量输入A3

P6.4/A4

3

通用数字I/O/模拟量输入A4

P6.5/A5

4

通用数字I/O/模拟量输入A5

P6.6/A6

5

通用数字I/O/模拟量输入A6

P6.7/A7/SVSIN

6

通用数字I/O/模拟量输入A7/SVS输入

XT2OUT

52

晶振XT2

XT2IN

53

晶振XT2

RST/NMI

58

复位输入/非屏蔽中断输入

TCK

57

JTAG口测试时钟

TDI/TCLK

55

JTAG口测试数据输入/测试时钟输入

TDO/TDI

54

JTAG口测试数据输出

TMS

56

JTAG口测试模式选择

VEREF+

10

外部参考电压输入

VREF+

7

ADC12参考电压正端输出

VREF-/VEREF-

11

参考电源负端

XIN

8

晶振XT1

XOUT

9

晶振XT1

2)堆栈指针SP为CPU专用寄存器R1,SP指针为16为寄存器,也总是偶数的。

堆栈是在片内RAM中实现的,通常将堆栈指针设置为片内RAM的最高地址加一。

使用C语言编程时,集成编译软件IAR会自动设置堆栈指针初始值。

对程序员来说无需关心细节,编译结束后在信息窗提示的编译结果会给出RAM使用量的大小,只要不超过RAM区实际容量并稍留余量给堆栈用即可。

使用汇编语言编程时必须注意堆栈指针的正确设置,否则堆栈可能会覆盖你的变量区,导致程序出错。

3)状态寄存器SR和常数发生器CG1、CG2(见数据手册)

状态寄存器SR

15~9

8

7

6

5

4

3

2

1

0

保留

V

SCG1

SCG0

OSCOFF

CPUOFF

GIE

N

Z

C

V溢出标志,当算术运算结果超出有符号数范围时置位。

SCG1系统时钟控制位1,该位置位时关闭SMCLK

SCG0系统时钟控制位0,如果DCO未用作MCLK或SMCLK时,该位置位关闭DCO。

OSCOFF晶振控制位,如果LFXT1未用作MCLK或SMCLK时,该位置位关闭LFXT1。

CPUOFFCPU控制位,该位置位时关闭CPU。

GIE总中断允许位,该位置位时允许可屏蔽中断;复位时禁止所有的可屏蔽中断。

N负数标志位,当运算结果为负时置位;否则复位。

Z零标志位,当运算结果为零时置位;否则复位。

C进位标志位,当运算结果产生进位时置位;否则复位。

(2)片内存储器

MSP430单片机采用冯·诺依曼结构,程序存储器flash、数据存储器RAM、特殊功能寄存器以及中断向量全部映射到64kB内部地址空间。

MSP430不同型号单片机地址空间略有不同,MSP430F249的存储器结构如表2-2所示。

表2-2MSP430F249存储器结构

名称

地址范围

大小

中断向量

0xFFFF~0xFFC0

64B

程序存储区flash

0xFFC0~0x1100

约60kB

信息存储区

0x10FF~0x1000

256B

引导区

0x0FFF~0x0C00

1kB

数据存储区RAM

0x09FF~0x0200

2kB

16位外围模块

0x01FF~0x0100

256B

8位外围模块

0x00FF~0x0010

240B

特殊寄存器

0x000F~0x0000

16B

1)数据存储区

MSP430F249的数据存储区RAM有2kB大小,地址范围0x0200~0x09FF。

RAM为堆栈、全局变量和局部变量提供空间。

使用C语言来开发项目,注意观察编译结束后在信息窗口中提示的RAM使用量的大小,只有不超过RAM区的实际容量并稍留余量即可。

2)引导区

引导区使得用户可以通过UART串口对MSP430单片机的程序存储器flash或RAM区实现程序代码的写操作。

详细内容参见TI公司的相关技术文档《FeaturesoftheMSP430BootstrapLoader》。

3)信息存储区

MSP430F249单片机有256B的信息存储区,它分为两段,每段128B。

信息存储区用来存放那些掉电后需要保存的变量,一般用来保存项目的设定值或量程转换参数。

Flash信息存储区只允许块擦除或写入操作,且有擦除次数的限制。

需要频繁(几秒钟一次)擦除写入的变量不能存放在信息存储区,这时可以外接铁电存储器EEPROM器件来保存这些变量。

4)程序存储区

MSP430F249单片机的程序存储区位于0x1100~0xFFC0,约60kB,程序存储区用于存放用户程序、常数以及表格等。

程序存储区可以通过JTAG、BSL和ISP方式下载得到用户程序。

关于Flash存储器,我们介绍几个基本概念。

Flash的结构决定了写操作只能将存储单元中的各比特位从1改写成0,而不能将0改写成1。

所以Flash中每个单元可以一次性写入数据,数据一旦写入,在擦除前不能被再次改写。

Flash可以被擦除,擦除后所有单元的比特位都恢复为1,但擦除操作只能针对整个段进行。

所以在改写某单元之前,必须先擦除整个段。

Flash存储器较适合做大批量连续数据存储,而且一般控制器都会提供连续写功能以提高速度。

在Flash中,将每次能擦除的最小区块单位成为“段”(Segment),将每次能连续写入的最大区块单位称为“块”(Block)。

MSP430单片机有5种低功耗模式,1种活动模式,如表2-3所示。

任何一种低功耗模式只能与活动模式进行切换。

表2-3工作模式表

模式

说明

活动模式

CPU、所有时钟与外设都为激活状态

LPM0

CPU关闭、ACLK和SMCLK外设时钟可用

LPM1

CPU关闭、ACLK和SMCLK外设时钟可用,若活动模式中DCOCLK未使用,则DCO发生器也禁止

LPM2

CPU关闭、MCLK和SMCLK禁止,DCO发生器使能,ACLK可用

LPM3

CPU关闭、MCLK和SMCLK禁止,DCO发生器禁止,ACLK可用

LPM4

CPU关闭且禁用所有时钟

(3)单片机工作原理

单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条指令的执行过程。

所谓指令就是把要求单片机执行的各种操作,用命令的形式写下来,一条指令对应着一种基本操作。

单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。

为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序。

程序需要预先存放在具有存储功能的部件——存储器中。

存储器由许多存储单元(最小的存储单位)组成,指令就存放在这些单元里。

每一个存储单元有唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。

程序的执行通常是顺序的,所以程序中的指令也是一条条顺序存放的。

单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中)。

在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC之中的内容就会自动增加,增加量由本条指令长度决定,以指向下一条指令的起始地址,保证指令顺序执行。

在程序顺序执行时,PC指针的内容自动增加,指向正在执行的指令的下一条指令;当发生中断或调用子程序时,当前的PC值被保存到堆栈,然后PC指针置入新的值(中断向量地址或子程序入口地址),程序的流动发生变化,执行完这些程序后,PC指针的值要恢复为堆栈中保存的旧的PC值,程序从断点处继续顺序执行。

2.2MSP430单片机的C语言基础

C语言是一种结构化的高级语言,其优点是语言简洁、表达能力强、使用方便灵活、可读性好、可移植性强。

C语言程序本身不依赖单片机硬件,如果更改工程项目中的单片机型号,对C语言程序稍加修改就可以进行程序移植,而且移植程序时不一定要求程序开发人员详细掌握新型号单片机的指令系统。

C语言程序的书写格式十分自由。

一条语句可以写成一行,也可以写成几行;还可以在一行内写多条语句;但是需要注意的是,每条语句都必须以分号“;”作为结束符。

为了C语言程序能够书写清晰,便于阅读、理解和维护,在书写C语言程序时最好遵循以下规则。

a)一个声明或一条语句占一行;

b)不同结构层次的语句,从不同的起始位置开始,机缩进相同的字数;

c)用{}括起来的部分表示程序的某一层次结构。

目前有几种C编译器可以进行Msp430单片机程序开发,这些C编译器基本功能大致相同,但在某些细节上还是有所区别的,因此当选择了某个C编译器后应该学习掌握相应的C编译器语言用法。

本章将以IARforMSP430编译器为例讲解C430程序设计的C语言基础。

2.2.1C语言的标识符和关键字

表2-4C语言的关健字

关键字

用途

说明

char

声明字符型变量或函数

数据类型

double

声明双精度变量或函数

void

声明函数无返回值或无参数,声明无类型指针

unsigned

声明无符号类型变量或函数

signed

声明有符号类型变量或函数

short

声明短整型变量或函数

long

声明长整型变量或函数

int

声明整型变量或函数

float

声明浮点型变量或函数

sizeof

计算数据类型长度

volatile

说明变量在程序执行中可被隐含地改变

typedef

重新进行数据类型定义

const

声明常量

Static

声明静态变量

存储种类的说明

register

声明寄存器变量

extern

声明外部变量

return

函数返回语句返回一个值

程序语句

case

开关语句分支

default

Switch语句的失败选择项

switch

开关语句

goto

无条件跳转语句

else

构成if-----else选择语句

if

if条件语句

continue

结束当前循环,开始下一轮循环

break

跳出当前循环体

while

构成while和do----while循环语句

do

循环语句的循环体

for

for循环语句

1)C语言的标识符是用来标识源程序中某个对象名字的。

这些对象可以是函数、变量、常量、数组、数据类型、存储方式、语句等。

一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不要使用以下划线开头的标识符,而将下划线用作分段符。

标识符的长度由系统决定,标识符最长可达255个字符,编写源程序时标识符的长度不要超过32个字符。

2)关键字是一类具有固定名称和特定含义的特殊标识符,又称为保留字。

在编写C语言源程序时一般不允许将关键字另作别用,换句话说就是对于标识符的命名不要与关键字相同。

上面表2.4所列的C语言关键字由系统保留不能用作用户标识符。

3)程序中对于标识符的命名应当简洁明了,含义清晰,便于阅读理解,如用标识符“max”表示最大值,用“TIMER0”表示定时器0等。

尽量不要取名“aa”、“bb”等等没有特定意义的标识符,这样虽然没有违反C语言的规则,但是在程序里就很不容易理解。

4)C语言区分大小写字母,C语言编译器在对程序进行编译时,对于程序中同一个字母的大小写作为不同的变量来处理。

例如定义一个延时函数的形式参数time,但是如果程序当中再出现一个由大写字母定义的标识符TIME,那么它们在程序当中是两个不同的标识符,是没有冲突的。

5)C语言程序中有且只有一个main函数,一个C语言程序,无论main函数的物理位置在那里,总是从main函数开始执行。

6)每句程序语句后面一定要加分号,分号是C语言结构的一部分,如果缺少了就会语法出错。

7)注释,在程序中添加注释是为了能更加容易读懂和理解程序,IAR有两种风格的注释方法“//”和“/*----------*/”。

“//”的意思是在其后面的全部引导为注释,而“/*----------*/”的意思是在“/*”开始,一直到遇到“*/”为止,在其里面的内容都被认为是注释。

不同的C语言编译器中变量类型略有差别,表2-5列出IARforMSP430支持的变量类型。

表2-5C430中变量类型

数据类型

值域

字节数

备注

char

-128~127

1

可设置

unsignedchar

0~255

1

28-1

int

-32768~32767

2

unsignedint

0~65535

2

216-1

long

-2147483648~2147483647

4

unsignedlong

0~4294967295

4

232-1

longlong

-9223372036854775808

~9223372036854775807

8

unsignedlonglong

0~184********709551615

8

264-1

float

-3.4x10-38~3.4x10-38

4

1位符号位,8位指数位,23位尾数位

double

-1.79x10-308~1.79x10-308

8

可设置,1位符号位,11位指数位,52位尾数位

Float和double的指数位是按补码的形式来表示的,所以float的指数范围为-128~+127,而double的指数范围为-1024~+1023。

float的范围为-2^128~+2^128,也即-3.40E+38~+3.40E+38;double的范围为-2^1024~+2^1024,也即-1.79E+308~+1.79E+308。

float和double的精度是由尾数的位数来决定的。

float:

2^23=8388608,一共七位,这意味着最多能有7位有效数字,float的精度为7位;  double:

2^52=4503599627370496,一共16位,double的精度为16位。

IARformsp430允许改变某些变量的特性。

在打开工程后,选择菜单项Project\Options,在GeneralOption\Target项中可以设置浮点数长度,FloatingPoint决定了double变量的字节数,默认是32bit,可以设置为64bit。

在C/C++Compile\Language项中Plaincha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1