提供者:深圳市亿威盛世科技有限公司 发布时间:2013/6/29 13:55:41 阅读次数:2063次 进入该公司店铺
MSP430F149的阻抗测量系统设计
医学阻抗测量是利用生物组织与器官的电特性及其变化,提取与生物体生理、病理状况相关的生物医学信息的一种检测技术。它通常借助于驱动电极向检测对象送入一微小的交变电流(或电压)信号,同时测量两极的电压(或电流)信号,从而计算出相应阻抗,然后应用于不同目的。
本设计利用MSP430F149自带的串口通过RS485进行远距离实时传输,上位机可将实时数据进行曲线绘制、数据保存等处理。
1 系统结构
系统采用TI公司的MSP430F149单片机。该单片机有60 KB Flash、2 KB RAM,具有强大的数据处理能力。单片机通过向AD9852发送频率字、幅度字从而控制正弦波的频率、幅度。正弦波经过电流转电压、功率放大等电路作用后,经过线圈T1隔离作用于人体,同时由线圈TFl和T2感应出的电流、电压相对量,经过程控放大器和真有效值转换后,进入单片机,进行A/D转换。单片机根据电流、电压值计算出电阻,再通过串口传输给PC机。其系统结构框图如图1所示。
2.1 单片机控制AD9852电路
如图2所示,单片机P1.O~P1.7,通过复用与AD9852数据、地址引脚相连,P2.3~P2.7与AD9852五个较重要的控制引脚相连接。单片机主要是通过向DDS输出幅度字、频率字来控制AD9852产生的正弦波的频率和幅度。
2.2 电流、电压测量电路
图3所示为电流测量电路原理。为了在不同幅度下都能准确测量电流,在峰一峰值转有效值电路前加了一片程控放大器,单片机通过输出增益控制使得即使前端电压很小时也能将其提高到一定程度,达到准确测量的目的。同样,在电流测量电路中,也使用了同样的原理图。
1 概述
MSP430F149的ADC12为SAR型12位AD,共有16路输入通道,其中8路独立的外部输入通道,2路接外部Vref+,Vref-,3路内部通道可分别测内部温度传感器、AVCC、和外部参考源。
P6口第二功能为AD输入端。MSP430F149的10、11分别接外部电压参考源正负极,7脚可将内部电压参考源输出。
ADC12共有18个中断源,公用一个中断向量ADC12_VECTOR。
AD的参考源可选择内部电压参考源或外部电压参考源。内部电压参考源有1.5V,2.5V可选,使用时向ADC12CTL0写入REFON+ REF2_5V就打开了2.5V。外部电压参考源由REF+接入。上电时若不设置参考源,则参考源为系统供电电压3.3V。
2 使用方法概述
2.1程序架构
中断方式
1、设置 ADC12工作模式,启动转换,开全局中断,等待中断
2、写中断处理函数
查询方式
设置ADC12工作模式,启动转换,查询中断标志ADC12IFG
while (!(0x01 & ADC12IFG));转换完毕读取采样值,系统自动清除中断标志
2.2 使用概述
主要参数配置
设置工作方式:sing\\\\sequence\\\\re-sing\\\\re-sequencd;
设置转换时间:SHTX
设置触发方式:ADC12SC\\\\MSC\\\\TimerA\\\\ TimerB
设置通道:外部通道\\\\内部Temperature sensor
设置参考源:系统电压\\\\内部参考源\\\\外部参考源
其他细节配置
一般要配置采样转换模式为脉冲(SHP),打开ADC12(ADC12ON),使能ADC12转换(ENC),使能中断(如果采取中断模式),触发转换(若采用ADC12SC触发)。
解释
ADC12模数转换是在SHI的上升沿初始化的。SHI信号有四个来源: The ADC12SC bit;The Timer_A Output Unit 1; The Timer_B Output Unit 0; The Timer_B Output Unit 1。故单次采样时只需要每次设置ADC12CTL0 |= ADC12SC就采样一次;重复采样时,如Rep-sing,设置ADC12CTL1 = SHS_1 +CONSEQ_2就选择了Rep-sing模式,每次采样通过定时器A触发。
3 相关寄存器
1、ADC12CTL0
SHT1x Bits
Sample-and-hold time. These bits define the number of ADC12CLK cycles in
the sampling period for registers ADC12MEM8 to ADC12MEM15.
SHT0x Bits
Sample-and-hold time. These bits define the number of ADC12CLK cycles in
the sampling period for registers ADC12MEM0 to ADC12MEM7.
ADC12ON
0 ADC12 off
1 ADC12 on
ENC
ENC Bit 1 Enable conversion
0 ADC12 disabLED
1 ADC12 enabled
ADC12SC Bit 0 Start conversion. Software-controlled sample-and-conversion start.
ADC12SC and ENC may be set together with one instruction. ADC12SC is
reset automatically.
0 No sample-and-conversion-start
1 Start sample-and-conversion
MSC Bit 7 Multiple sample and conversion. Valid only for sequence or repeated modes.
0 The sampling timer requires a rising edge of the SHI signal to trigger
each sample-and-conversion.
1 The first rising edge of the SHI signal triggers the sampling timer, but
further sample-and-conversions are performed automatically as soon
as the prior conversion is completed.
2、ADC12CTL1
SHP
SHP Bit 9 Sample-and-hold pulse-mode select. This bit selects the source of the
sampling signal (SAMPCON) to be either the output of the sampling timer or
the sample-input signal directly.
0 SAMPCON signal is sourced from the sample-input signal.
1 SAMPCON signal is sourced from the sampling timer.
SHSx Bits
11-10
Sample-and-hold source select
00 ADC12SC bit
01 Timer_A.OUT1
10 Timer_B.OUT0
11 Timer_B.OUT1
CONSEQx Bits
2-1
Conversion sequence mode select
00 Single-channel, single-conversion
01 Sequence-of-channels
10 Repeat-single-channel
11 Repeat-sequence-of-channels
3、ADC12IE
ADC12IEx Bits
15-0
Interrupt enable. These bits enable or disable the interrupt request for the ADC12IFGx bits.
0 Interrupt disabled
1 Interrupt enabled
4、ADC12IFG
ADC12IFGx Bits
15-0
ADC12MEMx Interrupt flag. These bits are set when corresponding
ADC12MEMx is loaded with a conversion result. The ADC12IFGx bits are
reset if the corresponding ADC12MEMx is accessed, or may be reset with
software.
0 No interrupt pending
1 Interrupt pending
5、ADC12MCTLX
SREFx Bits
6-4
Select reference
000 VR+ = AVCC and VR− = AVSS
001 VR+ = VREF+ and VR− = AVSS
010 VR+ = VeREF+ and VR− = AVSS
011 VR+ = VeREF+ and VR− = AVSS
100 VR+ = AVCC and VR− = VREF−/ VeREF−
101 VR+ = VREF+ and VR− = VREF−/ VeREF−
110 VR+ = VeREF+ and VR− = VREF−/ VeREF−
111 VR+ = VeREF+ and VR− = VREF−/ VeREF−
INCHx Bits
3-0
Input channel select
0000 A0
0001 A1
0010 A2
0011 A3
0100 A4
0101 A5
0110 A6
0111 A7
1000 VeREF+
1001 VREF−/VeREF−
1010 Temperature sensor
1011 (AVCC – AVSS) / 2
1100 (AVCC – AVSS) / 2
1101 (AVCC – AVSS) / 2
1110 (AVCC – AVSS) / 2
1111 (AVCC – AVSS) / 2
EOS Bit 7 End of sequence. Indicates the last conversion in a sequence.
0 Not end of sequence
1 End of sequence
4实例
4.1 single采样,参考电源为系统电源
1.设置ADC12CTL0,使ADC12通道0采样保持时间为16 ADC12CLK(SHT0_2),开启ADC12模块(ADC12ON);
2.设置ADC12CTL1,选择采样保持脉冲模式即SAMPCON为采样定时器(SHP)
3.设置ADC12IE,是通道0中断使能(0x01);
4.设置ADC12CTL0,使能AD转换(ENC)
5.设置模拟信号输入IO口P60
7.设置ADC12CTL0,开启AD转换(ADC12SC),等待中断
8.中断中读取通道0转换值ADC12MEM0
ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time, turn on ADC12
ADC12CTL1 = SHP; // Use sampling timer
ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ENC; // Conversion enabled
P6SEL |= 0x01; // P6.0 ADC option select
P2DIR |= 0x01;
ADC12CTL0 |= ADC12SC;
#pragma vector=ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
if (ADC12MEM0 < 0x7FF)
P2OUT = 0; // Clear P1.0 LED off
else
P2OUT = 0XFF; // Set P1.0 LED on
__low_power_mode_off_on_exit();
// 与上面等价_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
4.2 single采样参考源为2.5V
在ADC12CTL0中设置参考源
在ADC12MCTL0中为通道0选择参考源
ADC12CTL0 = ADC12ON+SHT0_2+REFON+REF2_5V; // Turn on and set up ADC12
ADC12CTL1 = SHP; // Use sampling timer
ADC12MCTL0 = SREF_1; // Vr+=Vref+
for ( i=0; i<0x3600; i++); // Delay for reference start-up
ADC12CTL0 |= ENC;
while (1)
{
ADC12CTL0 |= ADC12SC; // Start conversion
while ((ADC12IFG & BIT0)==0);
_NOP(); // SET BREAKPOINT HERE
}
4.3 Repeat-single采样,模拟输入为内部Temperature sensor
设置ADC12CTL1,采样保持源为定时器A,脉冲保持模式,Repeat-single模式
ADC12CTL1 = SHS_1 + SHP + CONSEQ_2; // TA trig., rpt conv.
设置ADC12MCTL0,通道0参考源为内部REF,模拟输入通道0选择为Temperature sensor
ADC12MCTL0 = SREF_1 + INCH_10; // Channel A10, Vref+
ADC12IE = 0x01; // Enable ADC12IFG.0
ADC12CTL0 = SHT0_8 + REF2_5V + REFON + ADC12ON + ENC; // Config ADC12
TACCTL1 = OUTMOD_4; // Toggle on EQU1 (TAR = 0)
TACTL = TASSEL_2 + MC_2; // SMCLK, cont-mode
while (!(0x01 & ADC12IFG)); // First conversion?
FirstADCVal = ADC12MEM0; // Read out 1st ADC value
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
if (ADC12MEM0 <= FirstADCVal + ADCDeltaOn)
P1OUT &= ~0x01; // LED off
else P1OUT |= 0x01; // LED on
}
摄氏温度和温度传感器电压转换关系:0摄氏度对应986mv,1摄氏度温差对应1.97mv温差
// oF = ((x/4096)*1500mV)-923mV)*1/1.97mV = x*761/4096 - 468
// IntDegF = (ADC12MEM0 - 2519)* 761/4096
IntDegF = (temp - 2519) * 761;
IntDegF = IntDegF / 4096;
// oC = ((x/4096)*1500mV)-986mV)*1/3.55mV = x*423/4096 - 278
// IntDegC = (ADC12MEM0 - 2692)* 423/4096
IntDegC = (temp - 2692) * 423;
IntDegC = IntDegC / 4096;
4.4 Repeat-sequence mode
Sequence模式时可以设置多个采样通道。在最后一个通道加上EOS就表明的采样通道结束位置。中断允许只需要设置最后一个通道。
为了采样速率尽可能快,可设置MSC,此时当SHI上升沿触发第一次采样后,后面的采样在上一次采样结束后自动进行。
ADC12CTL0 = ADC12ON+MSC+SHT0_8; // Turn on ADC12, extend sampling time
// to avoid overflow of results
ADC12CTL1 = SHP+CONSEQ_3; // Use sampling timer, repeated sequence
ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A0
ADC12MCTL1 = INCH_1; // ref+=AVcc, channel = A1
ADC12MCTL2 = INCH_2; // ref+=AVcc, channel = A2
ADC12MCTL3 = INCH_3+EOS; // ref+=AVcc, channel = A3, end seq.
ADC12IE = 0x08; // Enable ADC12IFG.3
ADC12CTL0 |= ENC; // Enable conversions
ADC12CTL0 |= ADC12SC; // Start conversion
_BIS_SR(LPM0_bits + GIE); // Enter LPM0, Enable interrupts
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
static unsigned int index = 0;
A0results[index] = ADC12MEM0; // Move A0 results, IFG is cleared
A1results[index] = ADC12MEM1; // Move A1 results, IFG is cleared
A2results[index] = ADC12MEM2; // Move A2 results, IFG is cleared
A3results[index] = ADC12MEM3; // Move A3 results, IFG is cleared
index = (index+1)%Num_of_Results; // Increment results index, modulo; Set Breakpoint here
}
MSP430F149有三个时钟源:外部LF(XT1一般为32.768K),HF(XT2一般为8M),内部DCO。从时钟系统模块可得到三种时钟信号:MCLK,SMCLK,ACLK。
上电默认状况下MCLK,SMCLK信号来自DCO,ACLK来自LF。根据官方PDF说法默认状况下DCO模块配置为RSELX=4,DCO=3,因此DCO应为1M,但示波器实测MCLK/SMCLK为680K,测试温度约25摄氏度。
标注:MCLK主时钟、SMCLK子时钟、ACLK活动时钟。
P5.4,P5.5,P5.6的第二功能分别对应MCLK,SMCLK,ACLK时钟信号,可用示波器测量。测试时发现频率后两位一直在跳动,频率稳定度很差。
MSP430系列单片机选择晶振为时钟源时,时钟周期就是晶振周期。一个机器周期 =一个时钟周期,即430每个动作都能完成一个基本操作; 一个指令周期 = 1~6个机器周期,具体根据具体指令而定。 如果选择8M晶振,则一个机器周期为125ns。51单片机选择12M晶振,它的机器周期是时钟周期/12,一个机器周期为1us,可见 MSP430的的速度是51的8倍。
2、使用方法概述
2.1 程序架构
一般在系统初始化关闭看门狗后要配置系统时钟,配置步骤为:
1、打开晶振;
2、等待晶振起振。清除OFIFG,延时,判断OFIFG是否为0,为0则晶振正常起振,退出判断;
3、选择MCLK/SMCLK时钟源;
uchar iq0;
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
2.2 细节描述
对于DCO可以通过配置电阻和DCO得到不同的频率。电阻可配置片内或片外(DCOR一般片内),片内电阻有8中选择(RSELX),DCO有8中选择(DCOX)。
3、相关寄存器
1、DCOCTL
DCOx Bits
7-5
DCO frequency select. These bits select which of the eight discrete DCO
frequencies of the RSELx setting is selected.
2、BCSCTL0
XT2OFF Bit 7 XT2 off. This bit turns off the XT2 oscillator
0 XT2 is on
1 XT2 is off if it is not used for MCLK or SMCLK.
RSELx Bits
2-0
Resistor Select. The internal resistor is selected in eight different steps.
The value of the resistor defines the nominal frequency. The lowest
nominal frequency is selected by setting RSELx=0.
3、BCSCTL0
SELMx Bits
7-6
Select MCLK. These bits select the MCLK source.
00 DCOCLK
01 DCOCLK
10 XT2CLK when XT2 oscillator present on-chip. LFXT1CLK when XT2
oscillator not present on-chip.
11 LFXT1CLK
SELS Bit 3 Select SMCLK. This bit selects the SMCLK source.
0 DCOCLK
1 XT2CLK when XT2 oscillator present on-chip. LFXT1CLK when XT2
oscillator not present on-chip.
DCOR Bit 0 DCO resistor select
0 Internal resistor
1 External resistor
4、实例
4.1 配置MCLK/SMCLK
见本节2.1。
4.2配置DCO
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
DCOCTL = DCO0 + DCO1 + DCO2; // Max DCO
BCSCTL1 = RSEL0 + RSEL1 + RSEL2; // XT2on, max RSEL
BCSCTL2 |= SELS; // SMCLK = XT2
P5DIR |= 0x70; // P5.6,5,4 outputs
P5SEL |= 0x70; // P5.6,5,5 options
1.1 FLASH特点
写操作只能将1改写为0,不能将0改写成1。FLASH擦除后所有单元变为1,擦除操作只能针对整个段。FLASH在擦除前不能被改写。
1.2 MSP430F149存储器编址方式
MSP430F149的ROM为60K+256B的FLASH,RAM为2K。MSP430存储器采用冯诺依曼结构,RAM和ROM合在一起编址。MSP430F149内部集成有FLASH控制器,可以简化对FLASH的操作。
64K的寻址空间分为RAM、FLASH。
RAM分两块:
1、寄存器(0000H-01FFH),存放特殊寄存器、设备寄存器、变量与堆栈。
2、数据RAM(01FFH-),存放各种变量、中间结果、堆栈。
FLASH分两块:
1、主FLASH 一般用于存放程序代码。
2、信息FLASH(InfoFlash)用作掉电后保存少量数据。分为InfoA(0X1080-0X10FF)和InfoB(0X1000-0X1080),每段各128B。
1.3 操作
三种操作:读取、擦除(只能针对段擦除)、写入(可以写入单个字节)。
2使用方法
2.1 程序架构
读取FLASH方法和读取RAM方法相同。写和擦除FLASH要进行如下配置:
配置寄存器
制定指针地址
写数据/复制数据
配置寄存器
2.2 参数配置
主要配置三个寄存器FCTL1,FCTL2,FCTL3。
1、配置FLASH控制器时钟。时钟要求控制在250-470Khz之间。
FCTL2 = FWKEY + FSSEL0 + FN0; //2分频
2、用指针指向地址Unsigned char *ptr= (unsigned char *) 0x1080;
3、进入写模式或擦除模式FCTL1=FWKEY+WRT;或FCTL1=FWKEY+ERASE
4、清除锁定位 FCTL3=FWKEY;
5、写数据 *ptr=0x30;或擦除*ptr=0;
6、退出写状态,恢复锁存
FCTL1=FWKEY;
FCTL3=FWKEY+LOCK;
2.3 说明
上电FLASH默认状态是读。为防止错误操作,FLASH的三个寄存器FCTLX都采用了密码核对机制FWKEY。
上电时FLASH的InfoFLASH区域值均为1,可直接进行写操作,但此后的写操作必须先擦除才能正确写入。
MSP430系列单片机FLASH擦写典型次数是10万次,最低保证1万次。产品设计初期要规划好FLASH的寿命,尽量不让某些需要频繁改动的数据保存在FLASH中,这些数据可保存在RAM中,在断电前才存入FLASH中。
3相关寄存器
1、FCTL2
FWKEY Bits
15-8
FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC
will be generated.
FSSELx Bits
7−6
Flash controller clock source select
00 ACLK
01 MCLK
10 SMCLK
11 SMCLK
FNx Bits
5-0
Flash controller clock divider. These six bits select the divider for the flash
controller clock. The divisor value is FNx + 1. For example, when FNx=00h,
the divisor is 1. When FNx=03Fh the divisor is 64.
FCTL2 = FWKEY + FSSEL0 + FN0;
2、FCTL1
FWKEY
Bits
15-8
FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC
will be generated.
MERAS
ERASE
Bit 2
Bit 1
Mass erase and erase. These bits are used together to select the erase mode.
MERAS and ERASE are automatically reset when EMEX is set.
MERAS ERASE Erase Cycle
0 0 No erase
0 1 Erase individual segment only
1 0 Erase all main memory segments
1 1 Erase all main and information memory segments
WRT Bit 6 Write. This bit is used to select any write mode. WRT is automatically reset
when EMEX is set.
0 Write mode is off
1 Write mode is on
3、FCTL3
FWKEYx Bits
15-8
FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC
will be generated.
LOCK Bit 4 Lock. This bit unlocks the flash memory for writing or erasing. The LOCK bit
can be set anytime during a byte/word write or erase operation and the
operation will complete normally. In the block write mode if the LOCK bit is set
while BLKWRT=WAIT=1, then BLKWRT and WAIT are reset and the mode
ends normally.
0 Unlocked
1 Locked
4 实例
4.1 上电后向InfoFLASH某单元写入一个字节数据
1、配置FLASH控制器时钟。时钟要求控制在250-470Khz之间。
FCTL2 = FWKEY + FSSEL0 + FN0; //2分频
2、用指针指向地址Unsigned char *ptr= (unsigned char *) 0x1080;
3、进入写模式FCTL1=FWKEY+WRT;
4、清除锁定位 FCTL3=FWKEY;
5、写数据 *ptr=0x30;
6、退出写状态,恢复锁存
注意FLASH操作期间不允许中断,所以写FLASH时要对全局中断允许进行操作。
代码如下:
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
FCTL2 = FWKEY + FSSEL0 + FN0; // MCLK/2 for Flash Timing Generator
unsigned char *ptr=(unsigned char *)0x1080;
FCTL1=FWKEY+WRT;
FCTL3=FWKEY;
_DINT();
*ptr=0x30;
while(FCTL3&BUSY);
_EINT();
FCTL1=FWKEY;
FCTL3=FWKEY+LOCK;
4.2 向FLASH的InfoA中连续写入128B数据
说明:通过FCTL1将FLASH设为段擦除模式后,只要向某个段内任何存储单元写入0即可进行擦除操作。
void write_SegA (char value)
{
char *Flash_ptr; // Flash pointer
unsigned int i;
Flash_ptr = (char *) 0x1080; // Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
*Flash_ptr = 0; // Dummy write to erase Flash segment
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
for (i=0; i<128; i++)
{
*Flash_ptr++ = value; // Write value to flash
}
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Set LOCK bit
1、概述
看门狗有两个作用:1、可以防止程序跑飞,若程序跑飞可让单片机复位;2、可作为间隔时间发生器,在中断中进行定期刷新显示、读取数据等对外设的操作。
2、设置
不需要看门狗时可用软件关闭,设置:WDTCTL = WDTPW + WDTHOLD;
为防止误触发操作WDTCTL需要先写入WDTPW。
作为间隔定时器时详细操作可见MSP430F149.H文件中的宏定义。
3、相关寄存器
1、WDTCTL Watchdog Timer Register
WDTPW Bits
15-8
Watchdog timer password. Always read as 069h. Must be written as 05Ah, or
a PUC will be generated.
WDTHOLD Bit 7 Watchdog timer hold. This bit stops the watchdog timer. Setting WDTHOLD= 1 when the WDT is not in use conserves power.
0 Watchdog timer is not stopped
1 Watchdog timer is stopped
WDTTMSEL Bit 4 Watchdog timer mode select
0 Watchdog mode
1 Interval timer mode
WDTCNTCL Bit 3 Watchdog timer counter clear. Setting WDTCNTCL = 1 clears the count value
to 0000h. WDTCNTCL is automatically reset.
0 No action
1 WDTCNT = 0000h
2、IE1 Interrupt Enable Register 1
WDTIE Bit 0 Watchdog timer interrupt enable. This bit enables the WDTIFG interrupt for
interval timer mode. It is not necessary to set this bit for watchdog mode.
Because other bits in IE1 may be used for other modules, it is recommended
to set or clear this bit using BIS.B or BIC.B instructions, rather than MOV.B
or CLR.B instructions.
0 Interrupt not enabled
1 Interrupt enabled
4、设计实例
4.1 利用WDT定时模式在中断函数中定时操作外设
说明:#define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL)
void main(void)
{
WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30ms
IE1 |= WDTIE; // Enable WDT interrupt
P2DIR |= 0x01; // Set P1.0 to output direction
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
P2OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
}
4.2 利用WDT定时模式延时
WDTCTL = WDT_ADLY_1000;//延时1000ms
//延时2s
for(i = 0; i < 3; i++)
{
IFG1 &= ~WDTIFG;
while(!(IFG1 & WDTIFG));
}
IFG1 &= ~WDTIFG;
德州TI 大陆授权代理商.
深圳办事处.福田区
深圳市亿威盛世科技有限公司
联系人:徐波
电话:086-
传真:
① 凡本网注明"来源:阿仪网"的所有作品,版权均属于阿仪网,未经本网授权不得转载、摘编或利 用其它方式使用。已获本网授 权的作品,应在授权范围内使用,并注明"来源:阿仪网"。违者本网将追究相关法律责任。
② 本信息由注册会员:深圳市亿威盛世科技有限公司发布并且负责版权等法律责任。
版权声明