msp430f5529是最新一代的具有集成usb的超低功耗单片机,可以应用于能量收集、无线传感以及自动抄表等场合,是最低工作功耗的单片机之一。msp430f5529开发板( msp-exp430f5529)是msp430f5529单片机的开发平台,由电源选择开关、rf射频接口、 microsd card插槽、msp430f5529芯片及引出引脚、usb接口、jtag仿真接口、齿轮电位计、电容触摸按键、led、按钮、 ez-fet内置仿真器、102x64点阵lcd和三坐标轴加速度计组成。该开发板将i/o引脚接出来,方便用户进行实验操作,既可用于科研开发,又适合实验教学、课程设计、毕业设计等,为广大高校师生提供了良好的实验开发环境,同时也是广大电子爱好者学习、开发msp430系列单片机的良好平台。
msp430f5529共有两类共4个定时器,分别是timer_a定时器3个和timer_b定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为timer0_a(内有5个捕获比较器)、timer1_a(3个)、timer2_a(3个)、timer0_b(7个)。
timer_a定时器3个
定时器a是一个复合了捕获/比较寄存器的十六位的定时(加减)计数器。定时器a支持多重捕获/比较,pwm输出和内部定时,具有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。
特征简介:
1、四种运行模式的异步16位定时/计数器
2、自身时钟源可选择配置
3、最多达5个可配置的捕获/比较寄存器(ccr)
4、可配置的pwm输出
5、异步输入和输出锁存
6、对所有timer_a中断快速响应的中断向量寄存器
tasselx :时钟源选择。尽量不要选tassel0-taclk外部时钟源,因为如果taclk和cpu时钟不同步,很容易出问题。(ta0clk接p1.0引脚)
00 taclk 01 aclk 10 smclk 11 ~taclk
idx:第一次分频控制。id0-1分频;id1-2分频;id2-4分频;id3-8分频
mc:工作模式控制。(建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、taclr例外),以避免产生未知的误操作。)
00 停止模式:定时器停止 01 增模式: 定时器计数到taccr0 10 连续模式,定时器计数到0fffh 11增减模式:定时器加计数到taccr0然后减计数到0000h
taclr:定时器清零位。该位置位会复位ta寄存器,时钟分频和计数方向。taclr位会自动复位并置0
taie:定时器中断使能 0:中断禁止 1:中断允许
taifg:中断标志位 0:没有中断发生 1:有中断挂起
计数值存放寄存器tar
1、显然,最大存放计数值为0xffffh;
2、(类似51单片机)可以被用来存放一个初值,然后选用连续模式。这样不断计满再手动填充,从而达到精确计时的效果;
3、默认为0,且对该寄存器可以直接赋值;
扩展寄存器taex0
很简单,这个寄存器就是为了控制时钟源的二次分频。
该寄存器的低3为定义为taidex:000-111分别表示1-8分频
捕获/比较寄存器taccr0-taccr4(共5个)
比较模式下,用来设定计数终值;
捕获模式下用来将捕获的tar值存放进taccrx中。
mc控制的四种工作模式的详细讲解
mc=0停止模式
这是系统默认的模式,定时计数器禁止工作。
mc=1增模式
1、此模式下严禁从0xffff开始计数;
2、注意从0计到taccr0,实际上记了taccr0+1个数;
3、计到taccr0后,会回到0重新开始计数;
4、如果tar的值大于taccr0,这时候会立即从0开始计数;
5、当定时器计数到taccr0的值时,中断标志ccifg位(之后会讲到)置位。当定时器由taccr0返回0时,taifg中断标志置位;
6、在定时器运行时修改taccr0,如果新的周期值大于或等于旧的周期值,或大于当前的定时器计数值,那么定时器立刻开始执行新周期计数。如果新周期小于当前的计数值,那么定时器回到0。但是,在回到0之前会多一个额外的计数。
mc=2连续模式
在连续模式中,定时器重复计数到0ffffh,然后重新从0开始增计数(除非每次重装计数初值)。当定时器从0ffffh到0时,taifg中断标志置位。
应用:连续模式下利用捕获/比较器产生需要的时间间隔。原理是:计数在一直进行,捕获器taccrx中存有第一个计数终值,每次捕获器计到taccrx时,会产生中断标志,我们可以在中断服务函数中写入一个计算好的下一个的计数终值,这样无限计算和中断下去,那么该捕获器就会产生一个稳定的时间间隔序列。(其实吧,不明白也没关系。就算明白了,也不好用,因为计算起来很麻烦而且也不好用)
mc=3增减模式(常用于生成pwm波)
1、该模式下,计数方向是固定的,即让定时器停止后再重新启动定时器,它就沿着停止时的计数方向和数值开始计数。如果不希望这样,就需要将taclr置位来清除方向。taclr位也会清除tar的值和定时器的时钟分频。
2、当定时器运行时,改变taccr0的值,如果正处于减计数的情况,定时器会继续减到0,新的周期在减到0后开始。 如果正处于增计数状态,新周期大于等于原来的周期,或比当前计数值要大,定时器会增计数到新的周期;如果新周期小于原来的周期,定时器立刻开始减计数,但是,在定时器开始减计数之前会多计一个数。
timer_b定时器1个
定时器b的简介
timer_b定时器特性:
(1) 16位同步定时/计数,4种工作模式可选、4中长度可选;
(2) 可选可配置时钟源;
(3) 高达7个捕获/比较寄存器;
(4) 可配置pwm输出;
(5) 带有同步装载的双缓冲比较寄存器;
与定时器a的比较(相同点与不同点)
(1) tb的计数长度可以选择(8、10、12、16bits),而ta只有16位;
(2) tb0ccrn寄存器是双缓冲的,且可以分组;
(3) 所有的tb输出可以被设为高阻状态;
(4) tb没有scci,即捕获器输入信号cci没有被锁存;
(6) 快速解码的中断向量;
timer0_b寄存器介绍及设置
声明:所有寄存器同样支持字和字节操作
所有寄存器初始化都为0x0000
tb控制寄存器tb0ctl(最常用最基本)(和ta有一点不同)
rw-(0)表示默认读写均为0
tbclggrp:tb0cln分组控制
00:每个tb0cln独立使用
01:tb0cl1+tb0cl2作为一组(tb0ccr1的clld位控制整组数据更新)
tb0cl3+tb0cl4作为一组(tb0ccr3的clld位控制整组数据更新)
tb0cl5+tb0cl6作为一组(tb0ccr5的clld位控制整组数据更新)
10:tb0cl1、2、3一组,(tb0ccr1的clld位控制整组数据更新)
tb0cl4、5、6一组,(tb0ccr4的clld位控制整组数据更新)
11:tb0cl0、1、2、3、4、5、6整合为一组,
(tb0ccr1的clld位控制整组数据更新)
cntl:计数器长度控制
00 16位,即最大可以计到0ffffh
01 12位,即最大可以计到0fffh
10 10位,即最大可以计到03ffh
11 8位,即最大可以计到0ffh
tbssel :时钟源选择。尽量不要选taclk外部时钟源,因为如果taclk和cpu时钟不同步,很容易出问题。(tb0clk接p7.7引脚)
00 tbclk
01 aclk
10 smclk
11 ~tbclk
id:第一次分频控制。id0-1分频;id1-2分频;id2-4分频;id3-8分频
mc:工作模式控制。(建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、taclr例外),以避免产生未知的误操作。)(和ta一样)
00 停止模式:定时器停止
01 增模式: 定时器计数到tb0ccr0
10 连续模式,定时器计数到0fffh(16位)…12位、10位…
11增减模式:定时器加计数到tb0ccr0然后减计数到0000h
tbclr:定时器清零位。该位置位会复位ta寄存器,时钟分频和计数方向。
taclr位会自动复位并置0
tbie:定时器中断使能
0:中断禁止
1:中断允许
tbifg:中断标志位
0:没有中断发生
1:有中断挂起
计数值存放寄存器tb0r
扩展寄存器tbex0
很简单,这个寄存器就是为了控制时钟源的二次分频。
该寄存器的低3为定义为tbidex:000-111分别表示1-8分频
捕获/比较寄存器tbccr0-tbccr6(共7个)
比较模式下,用来设定计数终值;
捕获模式下用来将捕获的tbr值存放进tbccrx中。
捕获/比较控制寄存器tb0cctl0-tb0cctl6:
cm:捕获模式设定 00 不捕获
01 上升沿捕获
10 下降沿捕获
11上升和下降沿都捕获
ccis:捕获源的选择 00 ccixa
01 ccixb
10 gnd
11 vcc
scs:同步捕获源,设定是否与时钟同步
0 异步捕获
1 同步捕获
clld:比较寄存器缓冲装载模式选择。
00 tb0ccrn的值(改变时)立即装载到tb0cln
01 当tb0r的值计到0时,进行装载
10 增模式或者连续模式下,tbr0值计到0时,进行装载 ;
增减模式下,tbr0计数到tbcl0时,开始装载;
11 tbr0计数到tbcl0时,开始装载;
cap: 0-比较模式 1-捕获模式
outmod:输出模式控制位。同ta一模一样
ccie:中断使能,该位允许相应的ccifg标志中断请求 。
0-中断禁止 1 -中断允许
cci :捕获比较输入,所选择的输入信号可以通过该位读取
out : 对于输出模式0,该位直接控制输出状态 。
0-输出低电平 1-输出高电平
cov:捕获溢出位。该位表示一个捕获溢出发出,cov必须由软件复位。
0-没有捕获溢出发生 1-有捕获溢出发生
ccifg:捕获比较中断标志位。
0-没有中断挂起 1-有中断挂起
中断向量寄存器tb0iv
同taiv一样,里面存放一个数字编号。
tb和ta的不同之处
没有再把cci信号锁存了
ta作捕获器的时候,cci为捕获信号,然后cci被锁存输出 为scci;
但是,tb没有锁存。也就是说只能从cci位查看输入信 号了。
计数值位数可调了(其实无所谓,都可以16位那干嘛不用)
ta的计数值寄存器tar只能是16位(0xffffh);
tb的计数值寄存器tbr可以选择是16、12、10、8位;
两级缓冲比较器(比较模式下)
ta里面,我们在taccrn中写入要比较的数值,然后让tar中的计数值和taccrn比较,如果相等了,相应的标志位就会置位;
tb里面,不仅有tb0ccrn,还多了一个二级缓存器tb0cln。tb0cln不能被直接进行操作,它的值只能来源于tb0ccrn。计数的时候,tb0r中的计数值不和tb0ccrn比较,而是和tb0cln进行比较。
二级缓冲是为了防止我们在修改tb0ccrn的值的时候,对计数产生影响。因为计数器不直接和tb0ccrn比较,而是tb0ccrn把值赋给tb0cln,由tb0cln去和tb0r进行比较。所以也就有了clld位控制比较寄存器缓冲装载模式:(当向tb0ccrn中重新写数时)
00 tb0ccrn的值立即装载到tb0cln
01 当tb0r的值计到0时,进行装载
10 增模式或者连续模式下,tbr0值计到0时,进行装载 ;
增减模式下,tbr0计数到tbcl0时,开始装载;
11 tbr0计数到tbcl0时,开始装载;
比较器可以被分组
ta没有二级缓冲寄存器,而且本来的taccrn也只能被单 独使用。
对于tb:
tbclggrp:tb0cln二级缓冲寄存器分组控制
00:每个tb0cln独立使用
01:tb0cl1+tb0cl2作为一组(tb0ccr1的clld位控制整组数据更新)
tb0cl3+tb0cl4作为一组(tb0ccr3的clld位控制整组数据更新)
tb0cl5+tb0cl6作为一组(tb0ccr5的clld位控制整组数据更新)
10:tb0cl1、2、3一组,(tb0ccr1的clld位控制整组数据更新)
tb0cl4、5、6一组,(tb0ccr4的clld位控制整组数据更新)
11:tb0cl0、1、2、3、4、5、6整合为一组,
(tb0ccr1的clld位控制整组数据更新)
所谓的分组,就是该组的数据要同时更新。
以10模式下的tb0cl1、2、3这组为例:
tb0cctl1中的clld设置为01,即tb0r计数到0时,tb0ccr1就会把值装载(更新)到tb0cl2中,同时tb0ccr2就会把值装载(更新)到tb0cl2中,同时tb0ccr3也会把值装载(更新)到tb0cl3中。无论tb0ccrn中的值有几个发生了变化,但它们都只会同时更新tb0cln。
网络和数字基础设施在COVID-19大流行期间的作用
电装携手KDDI开展自动驾驶中的5G应用测试
不能错过的超经典电磁兼容设计技巧
LED显示屏的灰阶和刷新率技术解析
电容分压器高压测量系统使用方法及注意事项详解
msp430f5529定时器
3D传感技术竞争中的蜂群思维状态
爆款挂脖风扇开发方案,采用合封芯片更省成本
360手机N5发布会倒计时:4大悬念曝光,360N5你值得期待和拥有
瑞士测量公司携手大疆改良DJI M600 Pro
TD无线固话设计思路的技术思考
如何解决人机协作的安全问题?
交流负载发电机测试介绍
灵途科技|轨道交通站台门间隙探测系统选型指南
中国移动:全面建设5G+医疗专网,构建5G+智慧医疗体系
Helio X30及先进制程效应减弱 联发科市占恐不进则退
唐华斌:OOTII项目进展符合预期,业务负载能力是重要挑战
华为余承东:2021年华为手机将全面支持鸿蒙OS 2.0
采用运放实现的单按键开关电路图
max6675 c语言程序