430定时器学习心得(精选4篇)
篇1:430定时器学习心得
Msp430单片机一共有5种类型的定时器。
看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit
Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。但是这些模块不是所有msp430型号都具有的功能。
1、看门狗定时器(WDT)
学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。
msp430中它是一个16位的定时器,有看门狗和定时器两种模式。
2、基本定时器(Basic Timer1)
基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。它可以只两个8位定时器,也可以是一个16位定时器。
3、8位定时器/计数器(8-bit Timer/Counter)
如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。
4、16位定时器A和B
定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和
msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。
定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器,并且有8种输出模式。通过8种输出模式很容易实现PWM波。定时器A的硬件电路大致可分为2类功能模块:
一:计数器TAR
计数器TAR是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断TAIFG。
二:比较/捕获寄存器CCRX
如何实现定时功能呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表示)。
当计数器TAR的计数值等于CCRx时(这就是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会产生一个中断。依据中断即可得到相应的定时时间了。
这样我们可以通过定时器A得到三个定时时间了。
一:程序示例
我先给出我的一个应用程序,然后通过程序来书名定时器A的基本用法。程序如下: /****************************************************
*定时器初始化
****************************************************/
void init_TimerA(void)
{
CCTL0 = CCIE;//1:开启比较器0中断
CCR0 = 32768;// 2:定时时间的选取
其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s
CCTL1 = CCIE;// 开启比较器1中断
CCR1 = 100;// 3.66mS显示延迟
TACTL = TASSEL_1 + MC_1;// 3:选择时钟源和计数模式
时钟源为ACLK并且为增计数模式
LPM3;//进入低功耗3
}
/****************************************************
*定时器0中断
****************************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
//用户代码 TACCR0
}
/****************************************************
二:程序分析
1):看程序中的定时器初始化模块。
1:CCTL0 = CCIE;
CCTLx是相应比较/捕获寄存器的控制寄存器,它可对比较/捕获寄存器进行设置。
这语句的意思是:开启了CCR0的中断使能,当计数器TAR计数到CCR0时产生中断。2:CCR0 = 32768;
CCRx就是相应比较器的值。
其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s定时。
3:TACTL = TASSEL_1 + MC_1;
TACTL是计数器的控制寄存器。
TASSEL_x是时钟源的选择。
0——TACLK,使用外部引脚信号作为输入
1——ACLK,辅助时钟
2——MCLK,系统主时钟
3——INCLK,外部输入时钟
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
switch(TAIV)
{
case2: //用户代码 break;// TACCR1
case4://用户代码 break;// TACCR2
case 10://用户代码 break;//TAIFG
}
//根据需要是否要退出低功耗模式
LPM3_EXIT;// 退出低功耗
}
二:程序分析
1):看程序中的定时器初始化模块。
1:CCTL0 = CCIE;
CCTLx是相应比较/捕获寄存器的控制寄存器,它可对比较/捕获寄存器进行设置。这语句的意思是:开启了CCR0的中断使能,当计数器TAR计数到CCR0时产生中断。2:CCR0 = 32768;
CCRx就是相应比较器的值。
其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s定时。
3:TACTL = TASSEL_1 + MC_1;
TACTL是计数器的控制寄存器。
TASSEL_x是时钟源的选择。
0——TACLK,使用外部引脚信号作为输入
1——ACLK,辅助时钟
篇2:430定时器学习心得
perferance>General>Apperance>Colors and Fonts >Basic>Text Font
将c语言编译成汇编语言之后执行。如果c语言结构不好,则编译后 会出现编译成汇编后代码冗余,使得执行效率不高。
板子有可能与电脑连接出问题,可以拔下重插一次。
在单片机内部flash存储空间有剩余时,可以用于数据存储空间,并且可以使用单片机程序进行数据管理。POR PUC是复位信号
看门狗定时器溢出发生复位 复位时设置如下:
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是数字震荡控制器1M 8M 12M 16M共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中声明extern int z 就可以使用文件1的z I/O口赋值方法与C51中的相同,可以使用OXxx或OXxxxx赋值。对P管脚整体赋值是对寄存器的赋值操作
BIT0,BIT1,BIT2,BIT3分别表示二进制的第一位,二位,三位为1,四位为1.表示0x01,0x02,,0x04,0x08.P1OUT|=BIT1,是除了第一位的寄存器值被改变,其他位的值 都不变,这样可以防止对其他位做了误操作。
关于逻辑操作:
&0xff与|0x00则不改变原值
^BIT0分为^0和^1,^1则每次之前的状态都改变,^0则每次之前的 状态都不变。因此^BIT0表示^0x0001,即前15位都不改变状态 只有最后一位翻转,可以用于位翻转操作。
<<移位操作经常用于数值计算以及某些循环操作。左移n位表示 *2^n.必须先对需要的未进行输入输出设置,之后才能进行读写操作。
模数转换器具有14路输入。
定时器与比较器配合,可以得到某个时间函数,如果知道了某 物理量随时间的变化规律,就可以进行测量。
利用定时器和RAM等存储数据的模块或数组,可以实现任意PWM波的 产生,再利用电容的充放电作用可以模拟出任何的周期性波形,方 法如下:定时器赋初值,启动定时器,计数停止后进入中断,在中 断中将下一个要计的时间加在初值上,继续计数。如此循环。每次 进入中断时都翻转一下输出电平。定下某个循环的次数作为一个大 周期。
P口要选择作为I/O口还是作为寄存器,选定后还要在方向寄存器中 确定是输入还是输出。
PXDIR为0时,要使用PxREN进行上拉下拉操作,上拉则默认输入是高 电平,下拉则默认是低电平。如P1REN|=BIT0;不操作时都默认为下拉。可以在P1REN寄存器里找到各位状态。
上电后P1DIR全部为0,即输入状态。P1OUT 的7~1都是1,p1.0是0.P1IN 的P1.1 P1.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通信时,数据格式为 :起始位 地址 停止位 起始位 数据 停止位 起始位 数据 停止位。。,其中在空闲模式下,连续10个
以上高电平表示空闲,在此之后的一定是地址帧。在10个之内的一定 是数据帧。
看某种类型变量是几位时,可以用使其溢出后自动赋值的方法来得到。
进入中断要有以下几条语句:
_BIS_SR(LPM4_bits + GIE);
// Enter LPM4 w/interrupt,写在主函数中 #pragma vector=PORT1_VECTOR __interrupt void Port_1(void){ }
简易延时要把延时数据定义成全局变量。
串口接收部分的软件设置包括对错误数据的处理 和对地址、数据的判断及处理两个部分。如果是正确的地址帧,则自动唤醒单片机,RXWAKE置位(只针对地址有效),如果URXWIE 软件置位则可以进入地址中断服务程序,进行 匹配。
GIE是全局中断,_BIS_SR(LPM1_bits+GIE);通常这样用。
串口通信中的中断使能寄存器是IE2,书写并 不复杂。标志位寄存器是IFG2。写入发送缓冲器时使得标志位复位,发送缓冲器写入移位寄存器后标志位置位。在发送中断打开的情况下会进入发送中断。响应 发送中断后标志位自动清零。不响应中断则不会 自动清零,需要软件清除。
(并不需要在发送中断中将标志位复位,因为 如果有继续发送的数据会在写入发送寄存器 时自动使得标志位复位。)
接收时收到完整字符并进入接收缓存后接收标志 置位。响应接收中断或读取接收缓存后使得标志 复位。
无论是软件设置标志位置位还是由于接收或发送 产生的标志位置位,都可以进入相应的中断。2553的串口中没有ME1,ME2寄存器,即没有 串口使能寄存器。有中断使能寄存器IE1,IE2.功能不同。
全局变量可以被任意模块改变。累计改变。
RXWAKE是可以进行检测的标志位,在地址多机 模式下,收到的字符地址位置位则唤醒。在空闲 模式下,接收到字符前检测到线路空闲则唤醒。唤醒了则表示接收到的字符是地址。
芯片所有的寄存器在头文件中都有解释,即 SFR_8BIT();芯片总中断: _EINT();
在写入发送寄存器时要检测是不是空闲,即检测 UCA0TXIFG是否置位,可以用 while((IFG2&UCA0TXIFG)==0);
头文件的定义与调试中寄存器界面的顺序是一样的
UCSWRST位置位,将使UCRXIE,UCTXIE,UCRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位复位,UCTXIFG 位置位。(这就可 以解释为什么以上点之后就可以进入发送中断)清除UCSWRST 将释放 USCI,使其进入操作状态。
数据接收中断的优先级最高
f/波特率 其实就是每个数据位采样的次数,因此 不应该小于3.定时器连续模式用于产生给定的时间间隔.通过 中断实现。是比较模式,不需要设置输出模式。
#pragma vector=TIMER0_A1_VECTOR是定时器中断 和CCR1~CCR4中断向量。具体是哪些还要看头文件 中的解释。如:
#define TIMER1_A1_VECTOR(12 * 1u)
/* 0xFFF8 Timer1_A CC1-4, TA1 */表示CCR1~ CCR4以及TA1.#pragma vector=TIMER0_A0_VECTOR是CCR0中断 向量。
定时器增模式:产生PWM波(比较部分)
定时器连续模式:产生间隔中断处理一些事情,也可用于键盘扫描,产生PWM波等(比较部分)定时器增减模式:产生对称的波(比较部分)
定时器连续模式:结合捕获到的TACCRx来测 量时间间隔、频率、速度等(捕获部分)
以下是地址多机模式发送字符的函数格式: void sendchar(unsigned int address){
unsigned int i;
UTCTL1|=TXWAKE;
TXBUF1=address;
while((UTCTL1&0X01)==0);
UTCTL1&=~TXWAKE;
for(i=0;i<=6;i++)
{
TXBUF1=Data[i];
while((UTCTL1&0X01)==0);
} }
下位机(五个149)其中一个地址位为0x01的149接收上位机数据的程序为:
/*************************************************/
/*说明:UART点对多点多机通信主机程序。
*/
/*UART以9600bps,8位数据,1位地址,1位停止模式发送。
*/
/*当地址位为1时判断地址,确认呼叫,接收后续字符串,并检查结束0。*/
/********************************************/
#include
//定义从机的地址位 unsigned char j1,count1=0;char Data1[20],Buffer1[20];void InitRS_SLA1(void){
UCTL1&=~SWRST;//SWRST复位,USART允许
UCTL1=CHAR+MM;•//8位数据位,1位停止位,地址位模式
URCTL1|=URXWIE;//只有地址字符使URXIFG置位
UBR01=0X03;
UBR11=0X00;
UMCTL1=0X4A;
•//使用32KHZ晶振时,波特率为9600bps
UTCTL1=0X10;•//选定ACLK(32KHZ晶振)为时钟源
ME2|=0X30;
//UART1发送及接收模块允许
P3SEL=0XC0;• //P3.6,P3.7被UART1发送模块占用
P3DIR=0X40;//P3.6输出,P3.7输入
IE2|=URXIE1;• //接收中断允许 }
interrupt[UART1RX_VECTOR] void UART1RX(void){
if(URCTL1&URXWIE)//接收为地址方式时,等待正确地指出现
{
if(RXBUF1==ADDRESS1)//地址正确,改变接收为数据方式,准备接受
{
URCTL1&=~URXWIE;
count1=0;
}
}
else
• //接收为数据方式时
{
Data1[count1]=RXBUF1;//数据存入Data数组中
if(Data1[count1++]==0)//是否到达末尾
{
URCTL1|=URXWIE;//改变接收为地址方式
for(j1=0;j1 Buffer1[j1]=Data1[j1];//复制字符串 } } } 最新发现:UCDORM相当于URXWIE,即只有地址 才能使得RXIFG置位,UCTXADDR相当于TXWAKE,即下一个要发送的字符是地址。 UCDORM在接收程序中用到,UCTXADDR在发送程序 中用到。 ADC10中的INCH_x表示所用通道的最大标号。从这 里开始进行采样。ENC=0;则在一次转化结束之后 跳到通道都没设置的初始化状态,MSC=0;则一次 转化后跳到需要触发信号触发的状态。 ADC10:单通道单次转换 一次转化以及转化结果进入ADC10MEM期间应保证 ENC=1;否则转化结果不确定。在采样保持期间ENC 可以变为0,此时结束转化。 ENC和ADC10SC可以不在同一条语句中。可以先ENC 再SC 单通道单次转换在转化结束(由于转化结果出现 或ENC=0引起)则不进行下一次转换,跳转到最初 的采样通道都没有选择的情况。 ADC10:序列通道单次转化 必须置MSC=1,否则再一次转化完成后不会继续向 下一通道采样转化,需要重新给触发信号。就像 单通道单次转换一样。要把使用的通道选定 要把对应管脚的的复选功能打开 要软件开通各通道:ADC10AE0,ADC10AE1.因为序 列通道转换是从高A15向A0的方向采样的,由于并 不是这之间的所有通道都有采样的需要,所以要 使用通道开放功能,将需要采样的通道置1,不需 要采样的置零关闭。 ADC10:单通道多次转换 工作期间必须使得ENC=1;否则会在一次转化完成后 跳到没有定义采样通道的初始化位置。如果一次 转化完成后MSC=0;就不会继续转化,等待下一次 触发信号启动转化。 ADC10的停止方法: ①在单通道单次转换中,应检测到busy==0时令 ENC=0; ②在其他转换中直接令ENC=0;会在相应的多次 转化末时自动结束。 One-Block模式下直到所定义的一块的数据量被 传送完毕之后才会置标志位。 USCI包括USCI_Ax和USCI_Bx两个不同的模块,如果 同一模块有几个,则x从0开始编号。 I2C要注意master还是slaver,是发送器还是接收器 主从可以通过对UCMST编程确定,收发可以 通过对UCTR编程确定。 I2C自己的地址可以通过对UCBxI2COA(自己)寄存器编程确定,对于主机还可以把要访问的 芯片地址写在UCBxI2CSA。还可以指定对于 general call(广播)是否回应。 I2C可以选择低功耗模式,使用SMCLK,系统自动 在需要SCL时启动SMCLK,以达到降低功耗的目的 但是SMCLK在其他模块也在使用,启用或关闭就会 影响其他模块的功能,建议不使用自动低功耗。当芯片处于slave receive时,由于SCL由外部 芯片提供,所以可以工作在LPM4下。接受或发送 中断会唤醒芯片。 I2C有两个中断源,接收和发送共用一个中断向量,四种通信状态标志共用一个中断向量。收发中断 用于收发数据,状态中断用于识别通信格式。 (UCALIFG/UCNACLKIFG/UCSTTIFG/UCSTPIFG)以上四种状态中断与UART中的UCAxRXIFG接收中断 共用一个中断向量,数据收发与UCAxTXIFG共用一 个中断向量。 在接收到非应答或写入数据时UCBxTXIFG复位。可以在中断中使用循环,将数据一次性发送出去。也可以通过发送一个字节就退出发送中断,发送 结束后再次进入发送中断的方式多次发送。 从机可以将SCL拉低来暂时停止数据传输。 I2C作为主机接收数据:设置从机地址、发送起始 位,开通接收中断即可。发送起始位之后自动发送 从机地址,在从机应答后立即清除起始位UCTxSTT I2C作为主机发送模式:设置从机地址、发送起 始位,开通发送中断即可。发送起始位之后自动 发送从机地址。在发送起始位时立即置位发送标志 进入发送中断,可以把数据进行发送。,在从机 应答后立即清除起始位UCTxSTT 要在传送完某个字节的数据之后立即结束,应该 检测UCBxTXIFG是否置位,只有在置位之后发出 STOP,才能保证数据的完整传输和快速停止。 主机发送模式下,要停止数据可以在数据发送之后 立即发送停止位。在主机接收模式下,要停止数据 可以在接收完一个字节后发送非应答位和停止位。 看门狗在复位模式下不能使用LPM4.因为看门狗 总需要一个时钟源。在中断模式下各种低功耗模式 都可以使用 看门狗在复位模式下可以保证所使用的时钟源不受 低功耗模式影响,所以尽量不要选用SMCLK,否则 在低功耗时SMCLK不会被关闭。LFXT1CLK可高可低,高达400k—16Mhz,低至32768 XT2CLK 只能是400k—16Mhz VLOCLK是内部非常低的振荡器,可达12Khz。 ACLK: LFXT1CLK VLOCLK MCLK: LFXT1CLK VLOCLK XT2CLK DCOCLK SMCLK: LFXT1CLK VLOCLK XT2CLK DCOCLK BCSCTL3中当XTS=0时说明LFXT1CLK选择低频率,可以 选择32768HZ或VLOCLK的12Khz,这可以使用LFXT1Sx 来选择。10为VLOCLK,00为32768hz。ACLK默认使用 LFXT1CLK,且默认为32768。当VLOCLK选中后 LFXT1CLK会自动停止,直接使用VLOCLK作为ACLK.不同的低频需要选择电容,高频或外部数字信号不 需要选择电容。XCAPx=00;但是需要选择频率范围。 电容感测:先选择某些引脚具有电容感测功能,P1 的引脚连在TA0的计数器上,P2的引脚连在TA2.FLASH擦出操作时:先定义地址,再设置擦出模式,再解锁,在写数据。 5529: 管脚2组为一大组,P12345678...分为PA~PD...。所有的赋值时使用PA|=0Xxxxx的方式。仅仅对于 中断寄存P1IV,P2IV不使用PAIV的形式,对于输入时的上拉下拉选择已经明确,是否上下拉 由PREN决定,上下或下拉选择则用PxOUT决定,1为 上拉,0为下拉。 各中断的优先级为P1.0最高,依次向下递减。当管脚选择了复选功能,则中断功能立即失效。 SPI模式: (1)输入时钟可以有多种选择,可以是慢时钟、快时钟以及外部时钟。虽然没有自动重载时间常数功能,但产生的定时脉冲或PWM信号没有软件带来的误差。 (2)不仅能捕获外部事件发生的时间,还可锁定外部事件发生时的高低电平,给使用带来了很大的方便。 (3)有适用于串行通讯的功能特征。 1 在控制系统中的开发与设计 TIMER_A有4种工作方式:停止、上升、连续、上升下降方式,其中上升和上升下降方式需要和比较/捕获通道0(CCR0)共同使用,可以根据实际的需要,灵活选用。如果多个捕获/比较通道都以16位的定时时间作为时标,TI-MER_A定时器采用连续方式的比较多。这里以MS-P430F1121单片机为例阐述几个应用的实例。 1.1 在温度控制系统中的设计 采用廉价的单片机进行产品设计时,用RC充放电原理测量已是很平常的事,然而,由于单片机的廉价,往往分辨率很低。MSP430的FLASH型单片机中,采用16位的TIMER_A定时器,再加上内部的比较器,至少能达到10位的AD测量精度。 传统的办法采用充电的办法测量。为增加分辨率,文中取内部的0.25Vcc作为阈值电压,采用放电的办法可分别测出参考电阻Rref的放电时间Tref,传感器电阻Rsensor的放电时间Tsensor,并有下面的公式: 下面的程序,定时器A的输入频率采用约1MHz左右的DCO。由于电阻大小和放电时间成正比,对测得的时间进行比较,就可以确定温度传感器的范围。如图1所示,如果温度电阻大于参考电阻时,P1.0输出低电平;反之,P1.0输出高电平。如果温度传感器采用负温度系数的103AT,参考电阻取10K,当温度高于25度时,LED亮;低于25度时,LED灭。如果要测量具体的温度数值,在下面的程序基础上增加温度传感器电阻值计算和查表程序就可以了。 程序如下: 1.2 在PWM控制系统中实现 利用TIMER_A做成的PWM,能用软件任意改变占空比和周期。若不需要修改占空比和时间,则不需要利用中断维持PWM输出,TIMER_A能自动输出PWM。 这里,TIMER_A工作在上升方式;捕获/比较通道CCR0控制PWM周期;捕获/比较通道CCR1控制PWM的占空比。CCR0和CCR1均工作在比较模式。P2.0接占空比寄存减按键,P2.1接占空比寄存加按键(具体见图2)。 程序如下: 1.3 在串行通讯系统中应用 如图3所示,晶振采用32768Hz,用TIMER_A产生2400波特率,并收发数据,支持232通讯。P2.1作为接收数据口,P1.1为发送数据口。数据格式采用1个起始位,8个数据位,1个停止位,没有奇偶校验位。利用定时器A,在达到比较时间后可对端口置位(输出方式1)和复位(输出方式5)。 具体程序如下: 2 结束语 MSP430单片机的TIMER_A结构复杂,功能强大,给开发人员提供了较多的灵活的选择余地。上面仅是控制系统开发的经验探索,以供读者在控制系统开发与设计中参考。开发人员只要深入理解了TIMER_A的原理,就可以根据自己的产品的实际情况,实现更多的开发方案。 参考文献 [1]胡大可.MSP430系列单片机C语言程序设计与开发.北京:航空航天大学出版社,2005. [2]魏小龙.MSP430系列单片机接口技术及系统设计实例.北京:北京航空航天大学出版社,2006. [3]余永权,黄英.单片机在控制系统中的应用.北京:电子工业出版社,2007. 自从20世纪80年代制定了有关检测PCB和IC芯片的一个标准- IEEE1149.1-1990以后,JTAG接口的技术得到了推广,后来,随着Flash 存储器技术的逐渐成熟,将这两种技术相互融合,通过JTAG接口来调试、开发和在线对Flash 存储器编程的仿真技术得到了很大的发展。TI公司将这一技术运用到MSP430Flash系列的单片机上。这样的仿真技术的特点是: (1)仿真器的硬件与单片机无关,仿真器只提供独立于单片机的JTAG标准接口,MSP430 Flash 系列的芯片上只提供用于仿真调试的信号引脚,用户只需按JTAG标准在单片机目标板上作一接口(14脚双排插针),二者相连即可对单片机进行仿真调试。 由于仿真器的硬件与单片机无关,不同系列的仿真器的硬件相同,可以节省开发投资。 (2)仿真接口与单片机的引脚数和封装无关,无论单片机的引脚数的多少,仿真头所使用的引脚数不变,解决了传统仿真头随单片机引脚数增多而体积增大的问题. (3)仿真接口与单片机的主频无关。硬件时序就是目标系统的硬件时序,避免了其间的差异。 (4)仿真器不占用单片机的任何资源。单片机的所有资源都在目标系统上。 MSP430学习、调试及开发系统由硬件和软件两部分组成。其中所使用的调试软件是IAR编译软件——IAR Embedded Workbench;硬件环境如图1所示,由PC机、MSP430 Flash仿真工具(FET)和系统目标板或学习板所组成。 学习和调试系统的硬件环境 ⒈MSP430 FET仿真工具 ⑴ JTAG 简介JTAG(Joint Test Action Group)是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准,即IEEE1149.1-1990。通过这个标准,可对具有JTAG接口的芯片的硬件电路进行边界扫描和故障检测。具有JTAG接口的芯片,相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,输入引脚,低电平有效。 一般JTAG内部有一个状态机,称为TAP控制器。它通过TCK和TMS进行状态的转变,实现数据和指令的输入。 JTAG标准定义了一个串行的移位寄存器。寄存器的每一个单元分配给IC芯片的相应的引脚,这个独立的单元称为BSC边界扫描单元。这个串联的BSC在IC内部构成JTAG回路,所有的BSR边界扫描寄存器通过JTAG测试激活,平时这些引脚保持正常的IC功能。 在设计PCB时,MCU中的数据线、地址线和控制线与其中Flash存储器的数据线、地址线和控制线相连。因为MCU的引脚都有相应的BSC,只要用JTAG指令将数据、地址和控制信号送给其BSC中,就可以通过BSC将信号送给Flash存储器,实现对Flash存储器的在线的读取、擦除和编程操作。 ⑵MSP430 FET仿真工具的原理MSP430 FET仿真工具的功能主要是将由PC机打印机接口来的8位并行数据与来自JTAG接口的串行数据进行相互转换,以实现PC机与MSP430芯片中的JTAG接口的通讯。 在本文所介绍的MSP430学习和调试系统中,可以使用TI公司推出的两种型号的MSP430 FET仿真工具:MSP430-FET 110仿真工具和MSP-FET430P440仿真工具。前者是TI最早推出的仿真工具,没有JTAG调试接口,只能支持MSP430F11x、 MSP430F11x1及MSP430F11x2 等器件;后者是TI新推出的仿真器,它由JTAG接口盒和DEMO板两部分组成,其JTAG口盒支持所有MSP430 FLASH系列单片机的开发,其DEMO板支持MSP430F43x及MSP430F44x器件。 MSP-FET430P440仿真工具的外形和PCB板图见图2a和图2b;MSP-FET430 110仿真工具PCB板示于图2 c中,而它的电原理图则示于图3中。至于仿真工具与学习板或目标板相连接的JTAG插头的引脚分配示于图4中。 ⑶ MSP430 FET仿真工具的功能 功能主要有三个:a.下载编码到器件;b.编程Flash存储器;c.通过内部的仿真逻辑进行仿真。 ⑷MSP430 FET仿真工具的连接 FET430X110仿真工具和FET430P440仿真工具的连接方法是不同的:a.对于FET430P440仿真器,仿真器用25芯的扁平电缆与PC的打印机接口相连,另一端JTAG口用14脚扁平电缆与用户的目标板连接(如本文提到的学习板);b. 对于FET430X110仿真器,仿真器用25芯的扁平电缆与PC的打印机接口连接,没有JTAG接口,所仿真的芯片直接焊在仿真器上或夹在仿真器的座上。 ⒉MSP430学习板 ⑴MSP430学习板概述 MSP430学习板是利尔达公司为了在我国推广MSP430系列单片机,执行大学计划而推出的学习和开发MSP430 Flash 型单片机的一个硬件平台。 学习板硬件平台以MSP430F449为核心,配合FET仿真工具及IAR软件平台,对所有的MSP430F43x和MSP430F44x系列单片机进行在线编程与测试,可方便地实现开发。 学习板采纳国内外许多单片机实验仪的优点,保持了传统机的实验项目,增加了以实用技术为主的许多实验。按照教育大纲的要求,可根据校方要求定制或校方自制实验卡与本机配合使用。学习板是《MSP430系列Flash型超低功耗16位单片机》、《MSP430系列单片机接口技术及系统设计实例》、《MSP430系列单片机C语言程序设计与开发》等教材和参考资料所必须的实验设备,它既能适合科研开发,又能适合大面积实验教学、课程设计、毕业设计等方面的要求,为广大高校师生提供一个良好的实验开发环境。同时也是广大的电子爱好者学习、开发MSP430系列单片机的良好平台。 该学习板集成了丰富的接口电路与模块,具体如下: 2种输出电压5V和3.6V 12键的行列键盘,3个独立按键 3种显示模式:LED、LCD(段码)、LCD(点阵) 3种通讯模式: 485、232、M_BUS 2种外围接口方式:SPI方式和 总线(串行EEPROM)模块方式 A/D转换接口(12位) 外部FLASH DATA 模块 Timer_A比较/捕获模式接口 学习板还把全部引脚用插座引出,并可通过DIP开关选择是否与外部电路相连,方便用户自己扩展模块与单片机相连。学习板的平面布置如图5所示。 【430定时器学习心得】相关文章: 430定时器心得分享08-16 555定时器06-28 音乐提示定时器05-16 定时器加密算法07-25 音乐提示定时器总结07-05 定时器/计数器教学设计09-11 51定时器四种工作方式08-31 定时备份05-17 定时工资制度04-11 符号定时同步09-12篇3:430定时器学习心得
篇4:430定时器学习心得