msp430学习经验总结.docx
- 文档编号:10337512
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:11
- 大小:22.68KB
msp430学习经验总结.docx
《msp430学习经验总结.docx》由会员分享,可在线阅读,更多相关《msp430学习经验总结.docx(11页珍藏版)》请在冰豆网上搜索。
msp430学习经验总结
竭诚为您提供优质文档/双击可除
msp430学习经验总结
篇一:
msp430学习经验总结:
msp430学习经验总结:
一.msp430开发环境建立
1.安装IARdormsp430软件,软件带usb仿真器的驱动。
2.插入usb仿真器,驱动选择安装目录的/drivers/TIusbFeT
3.建立一个工程,选择"option"选项,设置
a、选择器件,在"general"项的"Target"标签选择目标器件
b、选择输出仿真,在"Linker"项里的"output"标签,选择输出"Debuginformationforc-spY",以输出调试信息用于仿真。
c、若选择"other",output下拉框选择"zax-m"即可以输出hex文件用以烧录,注意,此时仿真不了。
d、选择"Debugger"项的"setup"标签,"Driver"下拉框选择"FeTDebugger"e、选择"FeTDebugger"项的"setup"标签,"connection"下拉框选择"TexasInstrumentusb-I"
4.仿真器的接口,从左到右分别为"gnD,RsT,TesT,Vcc"
二.Io口
数字输入/输出端口有下列特性:
每个输入/输出位都可以独立编程。
允许任意组合输入、输出。
p1和p2所有8个位都可以分别设置为中断。
可以独立操作输入和输出数据寄存器。
可以分别设置上拉或下拉电阻。
在介绍这四个I/o口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?
他起什么作用呢?
都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果p0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
(以下x为1表示p1,为2表示p2,如此类推)
1.选择引脚功能--pxseL,pxseL2
pxseL2pxseL管脚功能
00用作Io口
01用作第一功能引脚
10保留,参考具体型号的手册
11用作第二功能引脚
设置引脚用作外设功能时,芯片不会自动设置该引脚输入输出方向,要根据该功能,用户自己设置方向寄存器
pxDIR。
2.选择引脚输入/输出方向--pxDIR
bit=0:
输入
bit=1:
输出
3.选择引脚是否使能上下拉电阻--pxRen
bit=0:
不使能
bit=1:
使能
4.输出寄存器--pxouT
bit=0:
输出低电平或者下拉
bit=1:
输出高电平或者上拉
5.管脚状态寄存器--pxIn
bit=0:
管脚当前为低
bit=1:
管脚当前为高
你说的“第二功能”应该是指外围模块功能吧,用模块就选“第二功能”,不用模块就选“第一功能”。
可通过设置pxseL寄存器进行选择,某位写“0”为I/o;写“1”为“第二功能”。
用到比较器(片内外围模块)时要设置为第二功能。
当然你如果是用片外的比较器,将其输出的高低电平(1或0)送给msp430,那就选“第一功能”。
三.baseclock模块
一、4个时钟振荡源
1、LFxT1cLK:
外部晶振或时钟1低频时钟源低频模式:
32768hz高频模式:
(400Khz-16mhz)
2、xT2cLK:
外部晶振或时钟2高频时钟源(400Khz-16mhz)
3、DcocLK:
内部数字Rc振荡器,复位值1.1mhz
4、VLocLK:
内部低功耗振荡器12Khz
注:
msp430x20xx:
LFxT1不支持hF模式,xT2不支持,Rosc不支持.
二、3个系统时钟
1、AcLK:
辅助时钟
复位:
LFxT1cLK的LF模式,内部电容6pF
分频:
1/2/4/8
时钟源:
LFxT1cLK/VLocLK.
用途:
独立外设,一般用于低速外设
2、mcLK:
主时钟
复位:
DcocLK,1.1mhz
分频:
1/2/4/8
时钟源:
LFxT1cLK/VLocLK/xT2cLK/DcocLK
用途:
cpu,系统
3、smcLK:
子系统时钟
复位:
DcocLK,1.1mhz
分频:
1/2/4/8
时钟源:
LFxT1cLK/VLocLK/xT2cLK/DcocLK
用途:
独立外设,一般用于高速外设
三、寄存器
1、DcocTL:
Dco控制寄存器(读写)
Dcox:
定义8种频率之一,可分段调节DcocLK的频率,相邻两种频率相差10%。
而频率又注入直流发生器的电流定义。
moDx:
位调节器选择。
这几位决定在32个DcocLK周期内插入高1段频率fDco+1的次数。
当Dcox=7,已为最高段频率,此时不能用moDx作为频率调整。
2、bcscTL1:
基础时钟系统控制寄存器1
xT2oFF:
是否关闭xT20:
打开xT2,1:
关闭xT2
xTs:
xT2模式选择0:
LFmode(低频模式),1:
hFmode(高频模式)DIVA:
AcLK的分频选择0-3对应1/2/4/8分频RseLx:
选择Dco中16种标称的频率,
实际对应16个内部电阻0-15对应的频率从低到高,当DcoR=1时,表示选用外接电阻,所以RseLx无效
3、bcscTL2:
基础时钟系统控制寄存器2
seLmx:
选择mcLK的时钟源
0:
DcocLK
1:
DcocLK
2:
当xT2振荡器在片内时采用xT2cLK。
当xT2振荡器不在片内时采用LFxT1cLK或VLocLK
3:
LFxT1cLK或VLocLK
DIVmx:
mcLK的分频选择0-3对应1/2/4/8分频
seLs:
选择smcLK的时钟源
0:
DcocLK
1:
当xT2振荡器存在时选用xT2cLK,当xT2振荡器不存在时采用LFxT1cLK或VLocLK
DIVsx:
smcLK的分频选择0-3对应1/2/4/8分频
DcoR:
0:
DcocLK使用内部电阻、1:
DcocLK使用外接电阻
4、bcscTL3:
基础时钟系统控制寄存器3
xT2sx:
xT2范围选择
0:
0.4-1mhz晶体或振荡器
1:
1-3mhz晶体或振荡器
2:
3-16mhz晶体或振
荡器
3:
0.4-16mhz外部数字时钟源
LFxT1sx:
低频时钟选择和LFxT1范围选择。
当xTs=0时在LFxT1和VLo之间选择。
当xTs=1时选
择LFxT1的频率范围。
0:
LFxT1上的32768hz晶体
1:
保留
2:
VLocLK(msp430x21x1器件上保留)
3:
外部数字时钟信源
xcApx:
振荡器电容选择。
这些位选择当xTs=0时用于LFxT1的有效电容。
0:
1pF
1:
6pF
2:
10pF
3:
12.5pF
xT2oF:
xT2振荡器是否失效
0:
有效,正在工作
1:
无效,未正常工作
LFxT1oF:
LFxT1振荡器是否失效
0:
有效,正在工作
1:
无效,未正常工作
5、Ie1:
中断使能寄存器1
oFIe:
振荡器失效中断使能。
该位使oFIFg中断使能。
由于Ie1的其它位
用于其它模块,因此采用bIs.b或bIc.b指令来设置或清零该位比
用moV.b或cLR.b更合适。
6、IFg1:
中断标志寄存器1
oFIFg:
振荡器失效中断标志。
由于IFg1的其它位用于其它模块,因此采用bIs.b或bIc.b指令来设置或清零该位比用moV.b或
cLR.b更合适。
0:
没有未被响应的中断
1:
有未被响应的中断
四、Dco频率
4种频率经校准精度为±1%
4.定时器TA
一、时钟源
1、时钟源:
AcLK/smcLK外部TAcLK/IncLK
2、分频:
1/2/4/8当(注:
TAcLR置位时,分频器复位)
二、计数模式
通过设置mcx可以设置定时器的计数模式
1、停止模式:
停止计数
2、单调增模式:
定时器循环地从0增加到TAccR0值
周期:
TAccR0
ccIFg:
Timer计到TAccR0值时触发
TAIFg:
Timer计到0时触发
3、连续模式:
定时器循环从0连续增加到0xFFFF
周期:
0x10000
TAIFg:
Timer计到0时触发
4、增减模式:
定时器增计数到TAccR0再从TAccR0减计数到0周期:
TAccR0值的2倍
ccIFg:
Timer计到TAccR0值时触发
TAIFg:
Timer计到0时触发
三、定时器ATAccRx比较模式(用于输出和产生定时中断)
1、设置:
cAp=0选择比较
2、输出信号:
比较模式用于选择pwm输出信号或在特定的时间间隔中断。
当TAR计数
到TAccRx的值时:
a、中断标志ccIFg=1;
b、内部信号eQux=1;
c、eQux根据输出模式来影响输出信号
d、输入信号ccI锁存到sccI
每个捕获比较模块包含一个输出单元。
输出单元用于产生如pwm这样的信号。
每个输出单元可以根据
eQu0和eQux产生8种模式的信号。
3、中断
TimerA有2个中断向量:
a、TAccR0ccIFg的TAccR0中断向量
b、所有其他ccIFg和TAIFg的TAIV中断向量
在捕获模式下,当一个定时器的值捕获到相应的TAccRx寄存器时,ccIFg标志置位。
在比较模式下,如果TAR计数到相应的TAccRx值时,ccIFg标志置位。
软件可以清除或置
位任何一个ccIFg标志。
当响应的ccIe和gIe置位时,ccIFg标志就会产生一个中断。
c、TAccR0ccIFg标志拥有定时器A的最高中断优先级,并有一个专用的中断向量,
当进入TAccR0中断后,TAccR0ccIFg标志自动复位。
d、TAccR1ccIFg,TAccR2ccIFg,和TAIFg标志共用一个中断向量。
中断向量寄存器TAIV
用于确定它们中的哪个要求响应中断。
最高优先级的中断在TAIV寄存器中产生一个数字(见
寄存器说明),这个数字是规定的数字,可以在程序中识别并自动进入相应的子程序。
禁止定时
器A中断不会影响TAIV的值。
对TAIV的读写会自动复位最高优先级的挂起中断标志。
如果另一个中断标志置位,在结
束原先的中断响应后会,该中断响应立即发生。
例如,当中断服务子程序访问TAIV时,如果
TAccR1和TAccR2ccIFg标志位置位,TAccR1ccIFg自动复位。
在中断服务子程序的ReTI
命令执行后,TAccR2ccIFg标志会产生另一个中断。
四、TimerA的捕获模式
1、设置:
cAp=1选择捕获,ccIsx位设置捕获的信号源,cmx位选择捕获的沿,上升,下降,或上升下降都
捕获。
2、如果一个第二次捕获在第一次捕获的值被读取之前发生,捕获比较寄存
篇二:
msp430单片机学习心得总结
改变ccs字体方法:
perferance>general>Apperance>colorsandFonts
>basic>TextFont
将c语言编译成汇编语言之后执行。
如果c语言结构不好,则编译后会出现编译成汇编后代码冗余,
使得执行效率不高。
板子有可能与电脑连接出问题,可以拔下重插一次。
在单片机内部flash存储空间有剩余时,可以用于数据存储空间,并且可以使用单片机程序进行数据管理。
poRpuc是复位信号
看门狗定时器溢出发生复位
复位时设置如下:
1.RAm堆栈的指针指到最顶端
2.初始化看门狗
3.初始化外设
gIe是总中断
具有欠压复位功能
工作电流小于20uA
待机电流小于0.8uA
4个特殊功能寄存器
R0是pc指针
R1是堆栈指针
R2是状态寄存器
R3是常数发生器
12个通用寄存器R4-R15
27条内核指令
24条仿真指令
7中地址模式
无累加器
三个时钟:
AcLK辅助时钟:
频率较低,低速外设
mcLK是主时钟,cpu运行的时钟,高频
smcLK是次主时钟,高速外设
Dco是数字震荡控制器1m8m12m16m共4个级别,可以通过内置数据进行设置
内置VLo低频振荡器,频率为4-20khz。
所以可以通过Dco进行分频Timer_A频率可达系统振荡频率,用于定时器时,最小单位时间
是20ns
2553的电阻有0~15共16中。
用RseL选择。
RseL与Dco配合,值越大频率越大。
LF是外接时钟
usART支持uART、spI共2种通讯方式
uscI支持uART、I2c、spI共3种通讯方式
关于变量:
static变量是对于局部变量而言,如果不定义成静态变量,则
每次执行时都会被重新初始化,静态变量则不重新初始化。
全局变量和静态变量是存储在RAm中的。
extern是外部变量,即将一个文件中的变量在另一个文件中
使用。
如在文件1中声明了变量z,在文件2中声明externintz
就可以使用文件1的z
I/o口赋值方法与c51中的相同,可以使用oxxx或oxxxxx赋值。
对p管脚整体赋值是对寄存器的赋值操作
bIT0,bIT1,bIT2,bIT3分别表示二进制的第一位,二位,
三位为1,四位为1.表示0x01,0x02,,0x04,0x08.
p1ouT|=bIT1,是除了第一位的寄存器值被改变,其他位的值
都不变,这样可以防止对其他位做了误操作。
关于逻辑操作:
不操作时都默认为下拉。
可以在p1Ren寄存器里找到各位状态。
上电后p1DIR全部为0,即输入状态。
p1ouT的7~1都是1,p1.0是0.p1In的p1.1p1.2为高,其他为低。
在使用时应该先分清自己是要输入还是要输出,然后可以根据需要使用p1Ren调整初始状态。
I/o口作为输出时,如果输出寄存器p1ouT是高,则对输入寄存器pIn有影响,会直接将p1In寄存器变为高电平,这就是那位学长说的要注意的问题,要尽量避免,如在进行初始化时p1ouT=0x00;不应该利用这一现象,这不正宗。
I/0口的中断注意事项:
1.寄存器名称根据芯片的寄存器名称设置,2553是Ie1,Ie2,不是p1Ie,p2Ie(要以调试时的寄存器为准,不要看头文件中的。
)
2.Ie1为1是开中断,不要搞反了
3.将需要的端口的pxRen置1,即接上拉电阻。
4.标志位要软件清零
5.逻辑判断时要加括号,否则不能执行
6.不必局限于头文件中宏定义的oFIe,oFIFg等,p1,p2的所有管脚
都可以独立中断。
可以独立设置。
7.pxseLx只要置1,那么中断就自动禁止,不管pxIe是什么
不同的编译软件的寄存器名称不一样,设置时需要根据实际的进行设置,否则寄存器无效。
!
!
!
!
!
!
!
!
!
!
定时器是ccR0,ccR1,ccR2,ccR0的优先级最高,并且返回时不要软件清除中断标志位,是自动复位的(相当于51的8位自动重装定时器)。
其他定时器必须软件清除中断标志位。
ccR0,ccR1都是计数值,相当于51的Th0,TL0.Th1,TL1.
关于定时器的连续工作模式和增计数模式?
?
?
?
?
?
?
?
数据段的数据个数一般要超过256个才能通过8路AD转换。
mcLK的频率等于机器频率,每一个周期都能够完成一个基本操作。
一个指令周期等于1-6个机器周期,根据指令而定。
可以参照msp430时钟设置及其总结一文。
AcLK用于低速外设
mcLK用于cpu
smcLK用于高速外设
注意对寄存器进行位设置时的语法,可以是x|=a+b+c...
x表示寄存器名称,a,b,c表示寄存器的位名。
多机usART通信时,数据格式为:
起始位地址停止位起始位数据
篇三:
msp430学习心得
1.msp430f149系列芯片中执行一条指令用多长时间
与你的设置有一定关系,一个机器周期等于你mcLK的时钟周期。
mcLK的时钟源可以选择Doc(内部时钟源32768hz,这个是默认的,就是你没有任何设置,mcLK的时钟源就是Doc时钟)和外部晶振(也就是你说的8m晶振,这个需要寄存器设置选择外部晶振作为时钟),选择时钟后,又可以设置分频,1(默认的),2,4,8四种,如果你选择的是外部晶振(8m),没有设置分频,那么机器周期就是1/8m=125ns,单指令的执行时间就是125ns,如果是c的一条指令则要看它反汇编后需要的指令条数。
2.在2619系列芯片中允许设置Dco的频率,不设置时钟时默认mcLK的时钟是Dco,但是在149中默认为32768hZ,在2619系列芯片中可以将时钟设置为16mhZ,12mhZ,8mhZ,1mhZ.设置Dco的语句:
bcscTcL1=cAcbc1_xmhZx=16,12,8,1
DcocTL=cAcDco_xmhZx=16,12,8,1
3.如何计算指令周期
时钟周期也称为振荡周期:
定义为时钟脉冲的倒数(时钟周期就是直接供内部cpu使用的晶振的倒数,例如12m的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。
在一个时钟周期内,cpu仅完成一个最基本的动作。
时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。
时钟频率越高,工作速度就越快。
机器周期:
在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。
每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。
8051系列单片机的一个机器周期由6个s周期(状态周期)组成。
一个s周期=2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。
指令周期:
执行一条指令所需要的时间,一般由若干个机器周期组成。
指令不同,所需的机器周期也不同。
在430中,一个时钟周期=mcLK晶振的倒数。
如果mcLK是8m,则一个时钟周期为1/8us;一个机器周期=一个时钟周期,即430每个动作都能完成一个基本操作;一个指令周期=1~6个机器周期,具体根据具体指令而定。
单片机上电后,如果不对时钟系统进行设置,默认800khz的DcocLK为mcLK和smcLK的时钟源,LFxTl接32768hz晶体,工作在低频模式(xTs=o)作为AcLK的时钟源。
cpu的指令周期由mcLK决定,所以默认的指令周期就是1/800khz="1".25μs。
要得到lμs的指令周期需要调整Dco频率,即mcLK=1mhz,只需进行如下设置:
bcscTLl=xT20FF+RseL2;//关闭xT2振荡器,设定Dco频率为1mhzDcocTL=Dco2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- msp430 学习 经验总结