MSP430笔记

合集下载

MSP430f247单片机笔记

MSP430f247单片机笔记

POR信号产生源:1.给器件上电2.复位管脚产生复位信号超级电压监视电路发现电压不稳时,产生POR信号PUC信号产生源:1.产生了POR信号2.看门狗定时器溢出3.看门狗定时器安全密匙错误空间安全密匙错误系统复位后器件的初始化状态:POR信号后NMI管脚为复位模式O被切换到输入状态3.外设模块和相应的寄存器被初始化到确定的状态4.状态寄存器被复位5.看门狗定时器被打开回到以确定位置重新开始读取数据软件初始化:1.设置看门狗2.配置外设资源430单片机中断种类有三种:1.系统复位2.非可屏蔽中断3.可屏蔽中断非可屏蔽中断产生有三种情况:1.非可屏蔽管脚RST/NMI被配置为NMI模式时,产生了用户设定的电平跳变2.振荡器失效3.对FLASH空间的错误访问非屏蔽中断NMI为多源中断,只有一个中断向量,该中断向量对应着多个中断标志,进入该中断向量后用户先要判断那种原因导致了非可屏蔽中断(通过标志位判断,OFIFG=1,振荡器失效中断;ACCVIFG=1,.对FLASH空间的错误访问中断;NMIFG=1,非可屏蔽管脚RST/NMI被配置为NMI模式时,产生了用户设定的电平跳变产生的中断;),这些中断的中断标志位都要通过软件进行手动清除;可屏蔽中断:可通过状态寄存器中的通用中断标志位GIE来使能控制;可屏蔽中断的执行过程:1.可屏蔽中断发生到执行一般需要大约6个机器周期2.单源中断的中断标志位可通过硬件自动清除,多源中断的中断标志位要通过软件清除;状态寄存器被清除,所有低功耗模式结束,CPU进入活跃模式,同时GIE通用中断标志位被清除,其它中断无法打断,用户可通过软件再次打开;4.中断返回时,SR状态寄存器被还原,CPU置为中断前的模式,GIE重新置位,GIE=1;在PUC信号后,由DCOCLK作MCLK的时钟信号,根据需要可将MCLK的时钟源另外设置为LFXT1或XT2,设置顺序如下。

(1). 清OSCOFF/XT2(开启外部晶振)(2). 清OFIFG(3). 延时等待至少50uS(4). 再次检查OFIFG,如果仍置位,则重复(1)~(4)步,直到OFIFG=0为止。

MSP430f5438初学者笔记

MSP430f5438初学者笔记

MSP430f5438初学者笔记一、简介1.1CPU:16-bit RISC除program-flow指令外所有指令都在寄存器和7种源操作数寻址方式及4种目的操作数合作下执行16个寄存器,register-to-register指令执行时间是一个CPU时钟R0 程序计数器寄存器20-bitR1 堆栈指针20-bitR2 状态寄存器16-bitR3 不变的产生器R4~R15 通用寄存器1.2指令集:51指令3格式7中寻址方式附加指令1.3操作模式6个可软件设置的LOW-POWER模式一个中断事件可以唤醒5个模式中的任何一个,响应请求,并从中断程序中返回原模式Mode ACTIVE DISABLEDActive mode (AM) 所有时钟ACTIVELow-power mode 0 (LPM0) ACLK SMCLK FLL CPU MCLK LPM1 ACLK SMCLK CPU FLL MCLK LPM2 DCO发生器ACLK CPU MCLK FLL DCOCLK LPM3 ACLK CPU MCLK FLL DCOCLK DC发生器LPM4 晶振关闭完整数据保留LPM5 内部调节器关闭无数据保留通过RST和IO唤醒1.4中断矢量地址:FFFF~FF80H1.5 SFR处于最低地址空间可以进行字访问和字节访问1.6存储256K闪存空间64K程序存储器16KRAM 512BBSL程序装载器用于编程存储器串连接口1.7外围时钟:支持统一的时钟系统UCS包括:32K手表晶振(XT1 低频模式)内部低频振荡器VLO内部平衡低频振荡器REFO内部集成数字控制器DCO高频晶振(XT1高频模式or XT2)FLL锁频环连同一个数字调节器使得DCO构成一个多倍可编程的手表晶振时钟信号:ACLK 32K手表晶振、高频晶振、VLO、REFO、DCO MCLK CPU用,来源同ACLKSMCLK 用于外围来源同ACLK多分频ACLK电源管理模块(PMM)包括一个集成的PMM电压调节器,提供核心电压设备和包含可编程的产出水平,来提供电力的优化。

计算机硬件技术基础MSP430_复习知识点

计算机硬件技术基础MSP430_复习知识点

第一章基本原理1.冯诺依曼计算机:工作原理为存储程序+程序控制,结构为输入设备,存储器,运算器,控制器,输出设备2.基本概念【Bit:位】【Byte:字节,8个二进制位】【word:字,CPU内部数据处理基本单位,二进制位数和内部寄存器,运算装置,总线宽度一致】3.CPU,存储器,输入输出设备,输入输出设备通过I/O接口和系统连接,各个部位通过总线链接。

4.总线分为:地址总线(AB),数据总线(DB),控制总线(CB)。

地址总线宽度,决定CPU寻址能力,能够使用多大的内存或I/O端口。

数据总线的宽度决定一次最多传送数据的宽度。

5.存储单元:存储信息的基本单元。

存储单元内容:存储的数据。

存储单元地址:每个单元有唯一的编制,译码后可以得到相应的选通信号。

6.读操作:发出地址信号选中存储单元,发出读控制信号,将存储单元的内容通过数据总线传入CPU中。

写操作:CPU发出地址信号,选中相应的存储单元;CPU发出存储器写控制信号;将写的内容通过数据总线写入选中存储单元中。

7.定址原则:任何操作对象都有确定的地址,译码电路将地址信号实现定制功能。

8.微机的工作过程:取指令,将指令取出到CPU并且进行译码。

执行指令,由控制电路发出执行指令所需要的信号,控制CPU执行响应操作。

第二章数字的表示运算9.N进制到十进制:略。

十进制到N进制:整数部分为除n取余,商零为止,先低后高。

小数部分为乘2取整,到零为止,先高后低。

10.二进制数和十六进制数的运算:算术运算,进位和借位都存储在标志寄存器中。

11.无符号数:所有各位都表示数值大小,最高位无符号意义。

用于处理全部是正数的场合。

12.带符号数:用补码来表示带符号数。

求补运算:按位取反,最低位+1,相当于(0-该数)补码:正数的补码:全部为数字位(最高位是0)。

负数的补码:对该数正数进行求补运算(最高位为1)。

补码真值计算:最高位为0,等于二进制的数值。

最高位为1,先求补运算,再求数值大小。

msp430 学习经验总结

msp430 学习经验总结

电子工程师之家标题: msp430 学习经验总结作者: morphine 时间: 2012-12-28 14:56标题: msp430 学习经验总结msp430 学习经验总结:一.MSP430开发环境建立1.安装IAR dor msp430 软件,软件带USB仿真器的驱动。

2.插入USB仿真器,驱动选择安装目录的/drivers/TIUSBFET3.建立一个工程,选择"option"选项,设置a、选择器件,在"General"项的"Target"标签选择目标器件b、选择输出仿真,在"Linker"项里的"Output"标签,选择输出"Debug information for C-SPY",以输出调试信息用于仿真。

c、若选择"Other",Output下拉框选择"zax-m"即可以输出hex文件用以烧录,注意,此时仿真不了。

d、选择"Debugger"项的"Setup"标签,"Driver"下拉框选择"FET Debugger"e、选择"FET Debugger"项的"Setup"标签,"Connection"下拉框选择"Texas Instrument USB-I"4.仿真器的接口,从左到右分别为 " GND,RST,TEST,VCC"二.IO口数字输入/输出端口有下列特性:每个输入/输出位都可以独立编程。

允许任意组合输入、输出。

P1 和 P2 所有 8 个位都可以分别设置为中断。

可以独立操作输入和输出数据寄存器。

可以分别设置上拉或下拉电阻。

在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。

430学习1

430学习1

MSP430学习笔记之二:时钟模块MSP430系列单片机基础时钟主要是由低频晶体振荡器,高频晶体振荡器,数字控制振荡器(DCO),锁频环(FLL)及FLL+等模块构成。

由于430系列单片机中的型号不同,而时钟模块也将有所不同。

虽然不同型号的单片机的时基模块有所不同,但这些模块产生出来的结果是相同的.在MSP430F13、14中是有TX2振荡器的,而MSP430F11X,F11X1中是用LFXT1CLK 来代替XT2CLK时钟信号的.在时钟模块中有3个(对于F13,F14)时钟信号源(或2个时钟信号源,对于F11X、F11X1):1-LFXT1CLK: 低频/高频时钟源.由外接晶体振荡器,而无需外接两个振荡电容器.较常使用的晶体振荡器是32768HZ。

2-XT2CLK: 高频时钟源.由外接晶体振荡器。

需要外接两个振荡电容器,较常用的晶体振荡器是8MHZ。

3-DCOCLK: 数字可控制的RC振荡器。

1-ACLK: 辅助时钟信号.由图所示,ACLK是从FLXT1CLK信号由1/2/4/8分频器分频后所得到的.由BCSCTL1寄存器设置DIVA相应为来决定分频因子.ACLK可用于提供CPU外围功能模块作时钟信号使用.2-MCLK: 主时钟信号.由图所示,MCLK是由3个时钟源所提供的。

他们分别是LFXT1CLK,XT2CLK(F13、F14,如果是F11,F11X1则由LFXT1CLK代替),DCO时钟源信号提供.MCLK主要用于MCU和相关系统模块作时钟使用。

同样可设置相关寄存器来决定分频因子及相关的设置。

3-SMCLK: 子系统时钟,SMCLK是由2个时钟源信号所提供.他们分别是XT2CLK(F13、F14)和DCO,如果是F11、F11X1则由LFXT1CLK代替TX2CLK。

同样可设置相关寄存器来决定分频因子及相关的设置。

MSP430X1X1系列产品中,其中XT1时钟源引脚接法有如3种应用。

F13、14的XT1相同。

基于MSP430的防盗报警系统GSM学习笔记

基于MSP430的防盗报警系统GSM学习笔记

用MSP430F149单片机开发GSM模块变压器报警系统学习笔记2015 年1 月29 日18:15:20目录:1、GSM模块总是发送信息到串口2、按键中断无法退出的问题3、Flash写入问题4、字符数组和字符串的拼接问题。

字符数组与字符串参考资料1、GSM模块总是发送信息到串口发送的数据如下图:问题的原因是GSM模块频繁的重启导致的,一部分原因可能是电脑的USB接口电压不稳走,导致的GSM模块工作欠压状态,故而频繁重启。

这个需要在后期注意。

2、按键中断无法退出的问题按键是普通中断,旦是却出现了进入中断却无法退出的问题。

这个问题,出在了延时函数上,我选择的延时函数是利用定时器的,这个函数可能在中断函数中影响了中断标志,故而无法退出中断。

解决方法是使用普通的延时函数,不使用走时器就好了。

3、Flash写入问题在对Flash写入时,使用的是别人写好的库函数,这个库函数有个问题,问题就是每次写一位数据,就会相应的将前面的数据都清除掉。

例如:在FOxlOOO位置写字符,在FOX1OO1位置写字符〃b〃,在F0X1002位置写〃c〃。

得到的结果就是” c〃。

前面的数据都变成了0X00 ”被清空了。

我们看一下程序:void Flash_WriteB(uchar ^address, uchar dataS){//FCTL1 = 0xA500+0x0002; //允许擦除FCTL3 = 0xA500; //解锁//♦address 二0; 〃启动擦除FCTL1 = 0xA500+0x0040; //允许写♦address 二data8; //写入数据FCTL1 = OxAoOO;FCTL3 = OxAoOO+OxOOlO; 〃锁定}原因是开启了擦除指令,擦除指令把原来的数据都给擦除了。

按理说,这个擦除指令应该只是擦除一个位置的数据, 但是,却对其他位置的数据都给擦除了。

所以,修改原函数, 将原函数中的内容禁止擦除,这样,就解决了其他问题数据再写入新数据时被擦掉了。

[MSP430学习笔记] SD16使用说明

fM
SD16 Control Block
VREF
1.2V
0 1 1 0 1
Divider
MCLK SMCLK ACLK TACLK
Group/Start Conversion Logic
Channel x
PGA
2nd Order Σ Mod
SD16MEMx
SD16PREx
2005 Texas Instruments Inc, Slide 5
CH1_ISR CH1_ISR Over_ISR Over_ISR
; Handle channel 1 interrupt ; Handle channel 1 interrupt ; Handle overflow interrupt ; Handle overflow interrupt
2005 Texas Instruments Inc, Slide 17
采用 MSP430 Δ-Σ ADC 外设 实现高精度测量
Vincent Chan 德州仪器亚洲 MSP430 市场经理 vince-chan@
2005 Texas Instruments Inc, Slide 1
会议议程
Δ-Σ 的原理与优势 了解 SD16_A 选择 集成了 ADC 的 MSP430 实验练习:SD16_A 实际操作
Temp. sensor
A5
Port Pin Control
to SD16 Ax0 1 AVSS from Ax- pin to GPIO disable
2005 Texas Instruments Inc, Slide 8
* ‘F20x3 器件不带缓冲器
SD16AEx
模拟输入范围
什么是 VREF? PGA 如何设置? 适用于所有输入和模式

msp430学习资料

MSP430单片机外围模块演讲者:技术部六、USART(UART)异步通讯模块讲解•USART模块(UART)结构、特点•工作模式•介绍相应的寄存器试验:fet440_uart01_09600.cUSART模块(UART)的特点•传输7位或8位数据,带奇校验/偶校验或无校验;•两个独立移位寄存器:输入移位寄存器和输出移位寄存器•独立的收、发缓存;•最低位开始的数据收发;•异步模式,包括线路空闲/地址位通信协议•通过有效的起始位检测将MSP430从低功耗唤醒•编程实现分频因子为整数或小数的波特率•错误检测、抑制和地址检测的状态标志位;•独立的收、发中断;USART模块(UART)的结构USART初始化和复位ART在PUC信号或通过设置SWRST(软件复位位)时复位,当PUC信号后,SWRST位自动置位,保持USART在复位状态。

SWRST位复位URXIEx, UTXIEx, URXIFGx, RXWAKE,TXWAKE, RXERR, BRK, PE, OE, 和FE 位.置位UTXIFGx和TXEPT位. 接收和发送使能位URXEx 和UTXEx不改变.当复位SWRST,USART进入操作模式.2.操作步骤如下:(1)置位SWRST:(BIS.B #SWRST,&UxCTL)(2)设置USART的相关寄存器(3)使能USART模块通过设置MEx寄存器(4)清SWRST位(5)使能收发中断UART模式操作---数据格式UART模式操作---异步通讯格式线路空闲多机模式如何发空闲周期UART模式操作---异步通讯格式地址位多机模式(MM=1)UART模式操作---自动错误检测FE 标志帧错误:当一个接收字符的停止位为0并被装入接收缓存,接收的为一个错误的帧,那么帧错标志被设置成1,即使在多停止位模式时也只检测第一个停止位。

同样,丢失停止位意味着从起始位开始的同步特性被丧失,也是一个错误帧。

在同步的4线模式时,因总线冲突使有效主机停止,并在STE引脚信号出现下降沿时使FE位设置为1PE 奇偶校验错误:当接收字符中1的个数与它的校验位不相符,并被装入接收缓存时,发生校验错,设置PE为1OE 溢出错误标志:当一个字符写入接收缓存URXBUF时,前一个字符还没有被读出,这时前一个字符因被覆盖而丢失,发生溢出(同步与异步情况相同)BRK 打断检测标志:当发生一次打断同时URXEIE置位时,该位被设置为1,表示接收过程被打断过。

我的TLC2543学习笔记——基于msp430g2553单片机

我的TLC2543学习笔记——基于msp430g2553单⽚机还是贴不了图⽚我的TLC2543学习笔记Created on: 2012-9-8Author: zhang bin学习笔记for msp430g2553redesigned by zhang bin2012-09-08versions:12_09_01All Rights ReservedTLC2543具有4线制串⾏接⼝,分别为⽚选端(CS),串⾏时钟输⼊端(I/O CLOCK),串⾏数据输⼊端(DATA IN)和串⾏数据输出端(DATA OUT)(转换结束脚EOC可以不接)。

它可以直接与SPI器件进⾏连接,不需要其他外部逻辑。

同时,它还在⾼达4MHz的串⾏速率下与主机进⾏通信。

TLC2543的特点及引脚TLC2543是TI的12 bit串⾏A/D转换器,11个模拟输⼊通道。

使⽤开关电容逐次逼近技术完成,A/D转换过程.由于是串⾏输⼊结构,能够MCU的I/O资源.其特点有:1)12 bit分辨率A/D转换器;2)在⼯作温度范围内10us转换时间;3)11个模拟输⼊通道;4)3路内置⾃测试⽅式;5)采样率为66 kb/s;6)线性误差+1LSB(max);7)有转换结束(EOC)输出;8)具有单、双极性输出;9)可编程的MSB或LSB前导;10)可编程的输出数据长度.��� 12-Bit-Resolution A/D Converter��� 10-µs Conversion Time Over OperatingTemperature��� 11 Analog Input Channels��� 3 Built-In Self-Test Modes��� Inherent Sample-and-Hold Function��� Linearity Error . . . ±1 LSB Max��� On-Chip System Clock��� End-of-Conversion Output��� Unipolar or Bipolar Output Operation(Signed Binary With Respect to 1/2 theApplied Voltage Reference)��� Programmable MSB or LSB First��� Programmable Power Down��� Programmable Output Data Length��� CMOS Technology��� Application Report Available我⽤的tlc2543是直插的,引脚图如下:各引脚的详细说明如下:引脚号名称I/O说明1~9,11,12AIN0~AIN10I模拟量输⼊端。

MSP430G2553寄存器资料

MSP430G2553学习笔记常用赋值运算符:清除:&=~ ,置位:|= ,测试:&= ,取反:^= ,看门狗模块:WDT(看门狗)WDTCTL 看门狗定时器控制寄存器15--8 7 6 5 4 3 2 1 0口令HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0IS1,IS0 选择看门狗定时器的定时输出,T是WDTCNT的输入时钟源周期0 T x 2(15)1 T x 2(13)2 T x 2(9)3 T x 2(6)SSEL 选择WDTCNT的时钟源0 SMCLK1 ACLKIS0、IS1、SSEL可确定WDT定时时间,WDT只能定时8种和时钟源相关的时间WDT可选的定时时间(晶体为32768HZ,SMCLK=1MHZ)SSEL IS1 IS0 定时时间/ms0 1 1 0.056 Tsmclk x 2(6)0 1 0 0.5 Tsmclk x 2(9)1 1 1 1.9 Taclk x 2(6)0 0 1 8 Tsmclk x 2(13)1 1 0 16 Taclk x 2(9)0 0 0 32 Tsmclk x 2(15)(PUC复位后的值)1 0 1 250 Taclk x 2(13)1 0 0 1000 Taclk x 2(15)CNTCL当该位为1时,清除WDTCNTTMSEL 工作模式选择0 看门狗模式1 定时器模式NMI 选择RST/NMI引脚功能,在PUC后被复位0 RST/NMI引脚为复位端1 RST/NMI引脚为边沿触发的非屏蔽中断输入NMIES 选择中断的边沿触发方式0 上升沿触发NMI中断1 下降沿触发NMI中断HOLD 停止看门狗定时器工作,降低功耗0 WDT功能激活1 时钟禁止输入,计数停止WDT(看门狗)配置语句WDTCTL=WDTPW+WDTHOLD;//将WDTPW+WDTHOLD赋值给WDTCTL,关闭看门狗定时器控制寄存器(Stop watchdogtimer)IE1 |= WDTIE;//使能WDT中断WDTCTL = WDT_ADL Y_1000;//WDT 1 s / 4间隔计时器WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES;//WDTCTL 由高8位口令和低8位控制命令组成,要写入操作WDT的控制命令,出于安全原因必须先正确写入高字节看门狗口令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.首先你要知道msp430的存储器结构。典型微处理器的结构有两种:冯。诺依曼结构——程序存储器和数据存储器统一编码;哈佛结构——程序存储器和数据存储器;msp430系列单片机属于前者,而常用的mcs51系列属于后者。

0-0xf特殊功能寄存器;0x10-0x1ff外围模块寄存器;0x200-?根据不同型号地址从低向高扩展;0x1000-0x107f seg_b0x1080_0x10ff seg_a 供flash信息存储

剩下的从0xffff开始向下扩展,根据不同容量,例如149为60KB,0xffff-0x1100

2.复位信号是MCU工作的起点,430的复位型号有两种:上电复位信号POR和上电清除信号PUC。POR信号只在上电和RST/NMI复位管脚被设置为复位功能,且低电平时系统复位。而PUC信号是POR信号产生,以及其他如看门狗定时溢出、安全键值出现错误时产生。但是,无论那种信号触发的复位,都会使msp430在地址0xffff处读取复位中断向量,然后程序从中断向量所指的地址开始执行。复位后的状态不写了,详见参考书,嘿嘿。

3.系统时钟是一个程序运行的指挥官,时序和中断也是整个程序的核心和中轴线。430最多有三个振荡器,DCO内部振荡器;LFXT1外接低频振荡器,常见的32768HZ,不用外接负载电容;也可接高频450KHZ-8M,需接负载电容;XT2接高频450KHZ-8M,加外接电容。 430有三种时钟信号:MCLK系统主时钟,可分频1 2 4 8,供cpu使用,其他外围模块在有选择情况下也可使用;SMCLK系统子时钟,供外围模块使用,可选则不同振荡器产生的时钟信号;ACLK辅助时钟,只能由LFXT1产生,供外围模块。

4.中断是430处理器的一大特色,因为几乎每个外围模块都能产生,430可以在没有任务时进入低功耗状态,有事件时中断唤醒cpu,处理完毕再次进入低功耗状态。

整个中断的响应过程是这样的,当有中断请求时,如果cpu处于活动状态,先完成当前命令;如果处于低功耗,先退出,将下一条指令的pc值压入堆栈;如果有多个中断请求,先响应优先级高的;执行完后,等待中断请求标志位复位,要注意,单中断源的中断请求标志位自动复位,而多中断的标志位需要软件复位;然后系统总中断允许位SR.GIE复位,相应的中断向量值装入pc,程序从这个地址继续执行。

这里要注意,中断允许位SR.GIE和中断嵌套问题。如果当你执行中断程序过程中,希望可以响应更高级别的中断请求时,必须在进入第一个中断时把SR.GIE置位。

其实,其他的外围模块时钟沿着时钟和中断这个核心来执行的。具体的结构我也不罗索了,可以参考430系列手册。 明天开始,讲述msp430单片机C语言编程的故事 上回把430单片机的基础特性交待了一下,让大家整体有了结构的印象,今天我想在写一下c语言对430编程的整体结构。基本上属于框架结构,即整体的模块化编程,其实这也是硬件编程的基本法则拉(可不是我规定的法则哦)。

首先是程序的头文件,包括#include ,这是14系列,因为常用149;其他型号可自己修改。还可以包括#include "data.h" 等数据库头文件,或函数变量声明头文件,都是你自己定义的哦。

接着就是函数和变量的声明 void Init_Sys(void);系统初始化 系统初始化是个整体的概念,广义上讲包括所有外围模块的初始化,你可以把外围模块初始化的子函数写到Init_Sys()中,也可以分别写各个模块的初始化。但结构的简洁,最好写完系统的时钟初始化后,其他所用到的模块也在这里初始化。

void Init_Sys() { unsigned int i;

BCSCTL1&=~XT2OFF; //打开XT2振荡器 do { IFG1 &= ~OFIFG; // 清除振荡器失效标志 for (i = 0xFF; i > 0; i--); // 延时,等待XT2起振 } while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振

BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2 //以下对各种模块、中断、外围设备等进行初始化 ........................................ _EINT(); //打开全局中断控制 }

这里涉及到时钟问题,通常我们选择XT2为8M晶振,也即系统主时钟MCLK为8M,cpu执行命令以此时钟为准;但其他外围模块可以在相应的控制寄存器中选择其他的时钟,ACLK;当你对速度要求很低,定时时间间隔大时,就可以选择ACLK,例如在定时器Timea初始化中设置。

主程序: void main( void ) {

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 InitSys(); //初始化 //自己任务中的其他功能函数 。。。。。。。。。。。。。。。。。。。。。 while(1); } 主程序之后我要讲讲中断函数,中断是你做单片机任务中不可缺少的部分,也可以说是灵魂了(夸张吗)。

/***************************************************************************** 各中断函数,可按优先级依次书写

***********************************************************************/

举个定时中断的例子: 初始化 void Init_Timer_A(void) { TACTL = TASSEL0 + TACLR; // ACLK, clear TAR CCTL0 = CCIE; // CCR0 中断使能 CCR0=32768; //定时1s TACTL|=MC0; //增计数模式 }

中断服务 #pragma vector=TIMERA0_VECTOR __interrupt void TimerA0()

{ // 你自己要求中断执行的任务 } 当然,还有其他的定时,和多种中断,各系列芯片的中断向量个数也不同。

这就是简单的整体程序框架,写得简单啦,还忘谅解,明天详细了解一下各外围模块的初始化和功能,晚安。

整体的程序设计结构,包括了所有外围模块及内部时钟,中断,定时的初始化。具体情况大家可以根据自己的需要添加或者减少,记住,模块化设计是最有力的武器。

这可是个人总结的经典阿,谢谢支持。因为经常使用149,所以这是149的结构,其他的再更改,根据个人需要。{{分页}}

/*****************************************************************************\ 文件名:main.c 描述:MSP430框架程序。适用于MSP430F149,其他型号需要适当改变。 不使用的中断函数保留或者删除都可以,但保留时应确保不要打开不需要的中断。

\*****************************************************************************/

//头文件 #include

//函数声明 void InitSys();

int main( void ) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 InitSys(); //初始化 start: //以下填充用户代码

LPM3; //进入低功耗模式n,n:0~4。若不希望进入低功耗模式,屏蔽本句 goto start;

} /***************************************************************************** 系统初始化 ******************************************************************************/ void InitSys() { unsigned int iq0;

//使用XT2振荡器 BCSCTL1&=~XT2OFF; //打开XT2振荡器 do { IFG1 &= ~OFIFG; // 清除振荡器失效标志 for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振 } while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振

BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2 //以下填充用户代码,对各种模块、中断、外围设备等进行初始化 _EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句 }

/***************************************************************************** 端口2中断函数 ******************************************************************************/ #pragma vector=PORT2_VECTOR __interrupt void Port2() { //以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。

相关文档
最新文档