news 2026/8/5 23:20:46

【MSP430F2619】基础简介及基础设计、操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MSP430F2619】基础简介及基础设计、操作

一、特性

· 供电 1.8V ~ 3.6V

· 最高时钟频率 16MHz

· 16位RISC架构,62.5ns指令周期

· 120KB + 256字节(信息存储区) 闪存

· 4KB RAM

· 三通道内部DMA

· 12位 ADC 和 12位DAC

· 具有3个捕获/比较寄存器的 16位定时器 TimerA

· 具有7个捕获/比较寄存器的 16位定时器 TimerB

· 片上比较器A+ (Comparator_A+)

` 四个通用串行接口(USCI)

- USCI_A0 / USCI_A1

· UART

· SPI

· 红外数据通讯(IrDA)编码器 和 解码器

- USCI_B0 / USCI_B1

· IIC

· SPI

二、CPU架构

CPU包含16个 16bit的 寄存器,其中 R0 - R3 具有专用功能, R4 - R15为普通工作寄存器。

1、程序计数器PC (R0寄存器)

16bit程序计数器 PC指向 将执行的下一条指令。每条指令使用偶数个字节(2/4/6...),PC相应地递增。64KB地址空间中的指令访问在 字 边界上执行 ,PC与偶数地址对齐

2、堆栈指针SP (R1寄存器)

CPU使用堆栈指针 SP来存储 子例程调用 和 中断的返回地址。它使用一个先递减、后递增的机制 。SP可被具有所有指令和寻址模式的软件所使用 。SP由用户初始化到 RAM中(__set_SP_register(); ) ,并与偶数地址对齐

3、状态寄存器SR (R2寄存器)(重要)

状态寄存器SR 用作 源寄存器 或 目标寄存器 ,可用于仅通过字指令寻址的寄存器模式。其余的寻址模式组成用于支持常数发生器。
注意 :使用时 需配置 MSP430内联函数使用,不可直接赋值!!!!!

15-9876543210
保留VSCG1SCGOOSCOFFCPUOFFGIENZC
rw-0

V :溢出位。当算术运算从信号量范围内(向上向下)溢出时,置1。

N :负位。当字节或字操作的结果为 负时 置1 。

Z :零位。当字节或字操作的结果为 0时 置1 。结果 不为0 时清除 。

C :进位 位。当字节或字操作的结果 产生进位时 置1 。未发生进位时清除。

GIE :通用中断使能。置1 -- 启用可屏蔽中断 ; 复位0 -- 所有可屏蔽中断被禁用 。

SCG1 :系统时钟发生器1。 置1 --- 关闭SMCLK 。

SCG0 :系统时钟发生器0

置1 --- 关闭 DCO直流发生器(前提 :DCOCLK不用于MCLK 或SMCLK。)

OSCOFF :LFXT1振荡器关闭

置1 --- 关闭 LFXT1晶体振荡器 (前提 :LFXT1CLK不用于MCLK或SMCLK。)

CPUOFF :CPU关闭。置1 --- 关闭CPU 。

4、常数发生器CG1 和 CG2 (R3寄存器)

可生成 6个 常用常数,无需额外的16位程序代码字。可以使用源寄存器寻址模式(“作为”)来选择常数。

三、地址空间

1、外设区域(重要)

(1)、特别功能寄存器(SFR)(重要)

SFR位于地址空间的16个低字节(0x00h - 0x0Fh),并按字节组织,只能使用字节指令来进行访问。

SFR中断使能1 IE1寄存器 (0x00h)

76543210
UTXIE0URXIE0ACCVIENMIIE保留保留OFIEWDTIE
rw-0rw-0rw-0rw-0rw-0rw-0

UTXIE0:UART0 发送中断使能。 0 --- 未使能 1 --- 中断使能

URXIE0:UART0接收中断使能 。 0 --- 未使能 1 --- 中断使能

ACCVIE: 闪存访问权限中断启用 。 0 --- 未使能 1 --- 中断使能 (ACCVIFG位于FCTL3寄存器)

NMIIE:(不可)屏蔽中断使能 。 0 --- 未使能 1 --- 中断使能

OFIE:振荡器故障中断使能 。 0 --- 中断未使能 1 --- 中断使能

WDTIE:安全装置定时器+ 中断使能 。该位启用 间隔定时器模式下的WDTIFG中断。安全装置模式没有必要设置此位 。

0 --- 中断未使能 1 --- 中断使能

SFR中断使能2 IE2寄存器 (0x01h)

76543210
保留保留UTXIE1URXIE1UCB0TXIEUCB0RXIEUCA0TXIEUCA0RXIE
rw-0rw-0rw-0rw-0rw-0rw-0

UTXIE1:UART1发送中断使能 0 ---- 未使能 1 ----- 使能中断

URXIE1:UART1接收中断使能 0 --- 未使能 1 --- 使能中断

UCB0TXIE:USCI_B0 发送中断使能 0 --- 禁用中断 1 --- 启用中断

UCB0RXIE:USCI_B0接收中断使能 0 --- 禁用中断 1 --- 启用中断

UCA0TXIE:USCI_A0 发送中断启用 0 --- 禁用中断 1 --- 启用中断

UCA0RXIE:USCI_A0 接收中断启用 0 --- 禁用中断 1 --- 启用中断

SFR中断标志1 IFG1寄存器 (0x02h)

76543210
UTXIFG0URXIFG0保留NMIIFGRSTIFGPORIFGOFIFGWDTIFG
rw-1rw-0rw-0rw-(0)rw-(1)rw-1rw-(0)


UTXIFG0:USART0发送中断标志。 U0TXBUF为空时,置位。 0 -- 无中断 1 -- 有中断挂起

URXIFG0:USART0接收中断标志。U0RXBUF非空时,置位。 0 -- 无中断 1 --- 有中断挂起

NMIIFG:中断标志 。 必须由软件复位 。 0 --- 无中断挂起 1 --- 有中断挂起

RSTIFG:复位NMI模式中,引脚输入高电平, CPU在复位向量中存储的字地址 0FFFEh处开始执行,并设置 RSTIFG标志。

PORIFG:上电复位中断标志 , Vcc上电时 置1.

OFIFG:振荡器故障中断标志 。 0 --- 中断未挂起 1 --- 中断挂起

WDTIFG:安全装置定时器+ 中断标志 。在安全装置模式下 ,WDTIFG保持直到被软件复位 。

在间隔模式下 ,通过处理中断自动复位 WDTIFG ,或可以由软件 复位。

0 --- 无中断 1--有中断

SFR中断标志2 IFG2寄存器 (0x03h)

76543210
保留保留UTXIFG1URXIFG1UCB0TXIFGUCB0RXIFGUCA0TXIFGUCA0RXIFG
rw-1rw-0rw-1rw-0rw-1rw-0

UTXIFG1:USART1发送中断标志 。U1TXBUF为空时,置位。 0 -- 无中断 1 -- 有中断挂起

URXIFG1:USART1接收中断标志。 U1RXBUF非空时,置位。 0 -- 无中断 1 -- 有中断挂起

UCB0TXIFG:USCI_B0发送中断标志 。UCB0TXBUF为空时,置位 。0--无中断 1 -- 有中断

UCB0RXIFG:USCI_B0接收中断标志 。UCB0RXIFG非空时,置位。 0 -- 无中断 1 -- 有中断

UCA0TXIFG:USCI_A0发送中断标志 。UCA0TXBUF为空时,置位。 0 -- 无中断挂起 1--有

UCA0RXIFG:USCI_A0接收中断标志。 UCA0RXBUF非空时,置位。 0 -- 无中断 1 -- 有中断

SFR模块使能1 ME1 0x04h

76543210
USPIE0
RW-0

USPIE0:针对 USART0 的 SPI 模式启用。 0 -- 未使用 1 -- 启用模块
SFR模块使能2 ME2 0x05h

76543210
USPIE1
rw-0

USPIE1:针对 USART1 的 SPI 模式启用。 0 -- 未使用 1 -- 启用模块

(2)、字节(8bit)访问区域。 0x0010 --- 0x00FF

共计240字节,用于使用字节指令外设模块的寄存器访问。如果使用字指令写入,则会忽略高位字节,写入低字节。

(3)、字(16bit)访问区域 0x0100 --- 0x01FF

共计256字节,用于使用字指令外设模块的寄存器访问。

2、RAM区域

易失性内存,掉电数据丢失,一般用于程序运行时的临时数据存储,比如变量、堆栈等,大小为4KB。

地址1 :0x0200 --- 0x09FF 2KB

地址2 :0x1100 --- 0x18FF 地址空间1的镜像区域 2KB

地址3 :0x1900 --- 0x20FF 扩展区域2KB

3、BOOT区域

所有型号统一为 1KB的 ROM区域,地址为 0x0C00 --- 0x0FFFF。这是芯片内置的固化引导程序区域,用于实现串口等方式的在线编程、芯片启动自检等底层功能,用户无法编译。

4、FLASH区域

(1)、信息存储区

256B字节大小,属于独立的小容量 Flash区域,掉电数据不丢失,通常用于存储用户自定义的配置参数、校准数据等不需要频繁修改的关键信息。

地址1 :0x10C0 --- 0x10FF 段A 64B

地址2 :0x1080 --- 0x10BF 段B 64B

地址3 :0x1040 --- 0x107F 段C 64B

地址4 :0x1000 --- 0x103F 段D 64B

(2)、主FLASH区

用于存放用户程序代码 和 非易失性参数数据。地址为 0x2100 --- 0x1FFFF,共计120KB

(3)、中断向量表区域

所有型号地址统一为 0xFFC0 --- 0xFFFF,共64字节。用于存放所有中断服务程序的入口地址。

四、仿真

内部集成了 JTAG、SBW 、BSL 三种下载方式。

JTAG :下载速度快、可以仿真。 需要连接 TDI 、TDO 、TMS 、TCK

SBW :内部有一个SBW控制器,可以解码SBW信号转换成JTAG信号 ,需要连接 SWDIO(TDO) 、 SWCLK(TCK)

BSL : 是MSP430 FLASH系列独有的一项功能。


在程序空间、ROM之外有1KB左右的引导区,用来存放MSP430的BOOTROM(引导ROM)。 这个引导程序是固化在BOOTROM空间内,用户不能直接使用和修改。 当外界给芯片提供一种特定的激励时,芯片内的引导程序开始工作,引导外部 数据写入片内ROM、RAM。 在烧写过程中,如果设定了密码或使能了熔断丝,则会导致JTAG 和 SBW 均无法正常烧写程序,这时可以使用BSL进行大量擦除。 BSL可以设定密码,防止MCU内部程序被窃取。
外部数据由串口UART提供。 需要连接 BSL_TX(P1.1) BSL_RX(P2.2) TCK--RTS RESET--DTR

五、内联函数(重要)

内联函数定义在 instrinsics.h中,使用时需包含。<MSP430.h> 中已包含。

(1)、__bic_SR_register() ; / _BIC_SR();
将 CPU中SR状态寄存器中的某些位 清零。 例如 :__bic_SR_register(GIE); //关中断

(2)、__bis_SR_register() ; / _BIS_SR();
将 CPU中SR状态寄存器中的某些位 置1

(3)、__bic_SR_register_on_exit() ; / _BIC_SR_IRQ();
用于一个中断函数 或者 不可中断函数(标志为__monitor) 返回时 ,将CPU内SR寄存器中的某些位 清0。

(4)、__bis_SR_register_on_exit() ; / _BIS_SR_IRQ();
用于一个 中断函数 或者 不可中断函数(标志位__monitor) 返回时,将CPU内SR寄存器中的某些位 置1 。

(5)、__get_SR_register();
用于 获取 状态寄存器 SR的值

(6)、__get_SR_register_on_exit() ;
用于一个中断函数 或者 不可中断函数(标志位__monitor) 返回时,获取SR寄存器中的值

(7)、__get_SP_register() ;
用于获取 堆栈指针寄存器 SP的值。

(8)、__set_SP_register();
用于设置 堆栈指针寄存器SP的值。

(9)、__interrupt
放于函数前面 ,标志该函数为 中断函数。

#pragma vector = 中断向量值 (无 ;) 在中断函数前方需加该语句

(10)、__monitor
放于函数前面, 声明当该函数执行时自动关闭中断。(尽量少使用该关键字)

(11)、__no_init
放在全局变量前 ,使程序启动时不需为该变量赋初始值。

(12)、__disable_interrupt() ; / _DINT() ;
关闭总中断

(13)、__enable_interrupt(); / _EINT();
开总中断

(14)、__even_in_range(a , b);
判断 a 是否为偶数,且 ≤ b ,只与 switch配合使用 ,可提高效率

常被用在多源中断的查询中 ,如 switch( __even_in_range(TAIV , 10))

意思是:只有在 TAIV 的值 在 0 -- 10 内的偶数时才会执行。

(15)、__no_operation(); / _NOP();
空操作。

(16)、__bcd_add_short( unsigned short , unsigned short);
两个 16位的 BCD格式的数字相加 ,返回和

(17)、__bcd_add_long( unsigned long ,unsigned long);
两个 32位 的BCD格式的数字相加,返回和。

(18)、__delay_cycles(x);
系统自带的精确延时 。x 必须是常量 或者 常量表达式 。不允许是变量。

延时时间 = x * MCLK时钟周期。

(19)、内部函数
//向 地址(16bit) 中写入 数据(20bit)

void __data16_write_addr(unsigned short, unsigned long);

//从 地址(16bit) 中 读取数据(20bit)
unsigned long __data16_read_addr(unsigned short);

//向 地址(20bit) 中写入 数据(8bit)
void __data20_write_char(unsigned long, unsigned char);

//向 地址(20bit) 中写入 数据(16bit)
void __data20_write_short(unsigned long, unsigned short);

//向 地址(20bit) 中写入 数据(20bit)
void __data20_write_long(unsigned long, unsigned long);

//从 地址(16bit) 中 读取数据(8/16/20bit)
unsigned char __data20_read_char(unsigned long);
unsigned short __data20_read_short(unsigned long);
unsigned long __data20_read_long(unsigned long);

六、最小系统设计

七、新建工程

1、File ---> New ---> CCS Project

2、选择 对应型号单片机、连接的仿真器、工程名称 及 新建工程样式(空工程或带mian.c工程)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 23:18:05

深圳网站建设微信商城开发怎么做才能既好看又好用,聊聊那些踩过坑才懂的真话

咱们今天不聊那些虚头巴脑的大概念,也不整那些看似高大上却让人云里雾里的专业术语,就想静下心来,像老友喝茶聊天一样,实实在在地聊聊深圳网站建设微信商城开发这件事。很多人一听到这个词,脑子里蹦出来的全是代码、服务器、UI设计,觉得这是一件特别高深莫测的技术活。但…

作者头像 李华
网站建设 2026/8/5 23:14:18

网站建设确认单到底该怎么签才不吃亏?深度解析网站建设确认单的每一个细节与坑位

咱们今天不聊虚的,就聊聊那个让很多老板、项目负责人,甚至是一些自以为经验丰富的互联网从业者都能头疼半天的小东西——网站建设确认单。别听这个名字挺专业挺高大上的,其实说白了,它就是你在项目正式动工前,或者在关键节点上,双方手里必须握住的“尚方宝剑”和“护身符…

作者头像 李华
网站建设 2026/8/5 23:11:55

GPU服务器安装MilvusDB手记

目录 背景 操作步骤回顾说明 1、关于安装方式选择 2、准备镜像方面的物料 2-1、下载镜像物料 2-2、将成功下载后的镜像输出到文件 2-3、在测试服务器上准备docker与docker-compose环境 2-4、将准备好的物料上传到测试服务器并使用docker-compose命令启动相关容器 3、对…

作者头像 李华
网站建设 2026/8/5 23:11:22

安全卸载Ubuntu双系统:从分区管理到引导修复的完整指南

1. 从“想删”到“敢删”&#xff1a;卸载Ubuntu双系统的心理建设与风险预判很多朋友在体验了Ubuntu一段时间后&#xff0c;可能会因为软件生态、驱动兼容或者单纯想回归纯粹的Windows环境&#xff0c;萌生卸载它的念头。但“卸载”这个词&#xff0c;在双系统环境下&#xff0…

作者头像 李华
网站建设 2026/8/5 23:11:06

本地化AI模型部署与测试全指南:从环境搭建到API集成

这次我们来看一个名为“眼哥最喜欢拉布布了”的项目。从名称上看&#xff0c;它可能是一个带有特定情感或角色设定的AI应用&#xff0c;比如图像生成、语音合成或角色扮演相关的工具。这类项目通常聚焦于将某个特定角色&#xff08;如“拉布布”&#xff09;或风格进行本地化部…

作者头像 李华