我把MSP430的P1.2引脚作为方波的输入频率10Hz,但为什么一接到信号发生器上,就工作不正常,以下是程序:
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= ~XT2OFF; do
{
IFG1 &= ~OFIFG; for (unsigned int i = 0xFF; i > 0; i–); }
while ((IFG1 & OFIFG)); BCSCTL2 |= SELM_2 + SELS + DIVS_3;
P1DIR &= ~BIT2; P1SEL = BIT2;
P2DIR = BIT0; //控制LED灯,高电平灯灭 P2OUT = 0XFF; //灯灭 CCTL1 = CM_1 + SCS + CCIS_0 + CAP + CCIE; TACTL = TASSEL_2 + MC_2 + ID_3; _BIS_SR(GIE);
while(1);
}
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{ if(TAIV == 0X02) P2OUT ^= BIT0; //让灯交替亮灭
}
当程序下载到MCU时,灯在很快的闪,而且无论怎么调整输入的方波频率,灯都以那个频率在闪。当不接输入时,灯就不闪了。而且,在不接输入时,在P1.2口接一条杜邦线,杜邦线不连接其他设备,灯也会闪
gaoyang9992006:
你这个是MSP430的帖子啊,貌似有这个版块,你怎么发的
gaoyang9992006:
你先说明白,你想让程序干什么?这样我才能知道你要干嘛,你的程序干了嘛。你才知道为何没有干嘛。
gaoyang9992006:
根据你最后一句和你的程序,你需要启动REN上拉电阻,然后就不干扰了,目前接个电线都不停的被外界干扰,那是天线效应,赶紧的,启动上拉电阻,记得REN。
Jianhua Wu:
回复 gaoyang9992006:
谢谢,加一个电阻可以了,但有时候还是会出现一些不稳定,就是灯闪着闪着就不闪了
Jianhua Wu:
回复 Jianhua Wu:
在这段程序中
#pragma vector = PORT1_VECTOR //P1口中断程序__interrupt void Port_1(void){ a = P1IFG; P1IFG = 0X00; if(capture_times == 0) //如果是第一次捕获到上升沿 { CCTL0 |= CCIE; //打开定时器CCR0的定时功能 capture_times++; } if(capture_times == 1) //如果是第二次捕获到上升沿 { CCTL0 &= ~CCIE; //关闭定时器CCR0的定时功能 capture_times = 0; //清除捕获次数 capture_end = 1; //捕获完成标志置位 }}
用两个if是很大的BUG
TI中文支持网



