我用的ccs 5 为什么有的程序在仿真时正常(比如让一个led 一秒闪烁) ,但当按下停止键的时候 ,怎么一下子都没反应了(led不闪烁了)。并且是有的程序没事 有的有这种问题,求大仙指点
灰小子:
首先,不清楚楼主的电路和代码,不知道具体的这个停止键有没有相关的程序。
建议楼主对照电路图,核实代码,看有没有根据这个按键执行的程序。或者是折个按键的电路有没有影响到mcu的正常运行。
tong liu4:
回复 灰小子:
板子用的Launch Pad G2553的。。我说的是用ccs调试的时候,按全速运行可以,点击停止()板子 就没反应了,例如下面的程序 (但有的程序点击停止后板子和全速运行一样)
//利用定时器扫描机械按键的原理消除抖动
#include <msp430G2553.h>void P1_IODect();void P13_Onclick();void GPIO_Init();void WDT_Init();/* * main.c */void main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer GPIO_Init(); WDT_Init(); _enable_interrupts(); _bis_SR_register(LPM3_bits);}void GPIO_Init(){ P1DIR|=BIT0+BIT6; P1OUT|=BIT0; P1OUT&=~BIT6;
P1REN|=BIT3; P1OUT|=BIT3;
}void WDT_Init() { WDTCTL=WDT_ADLY_16; IE1|=WDTIE; //WDT中断使能 }#pragma vector=WDT_VECTOR__interrupt void WDT_ISR(void){ P1_IODect();//wdt定时中断独占中断向量,无需人工清楚工作标志位// P1IFG=0;
}void P1_IODect(){ static unsigned int key_now=0; //变量出函数时候需要保留 unsigned int key_pass=0; key_pass=key_now;
//查询IO输入寄存器 if(P1IN&BIT3) key_now=1; else key_now=0;
if((key_pass==1)&&(key_now==0)) P13_Onclick();
}void P13_Onclick(){ P1OUT^=BIT0; P1OUT^=BIT6;
}
对了我还想问一下 全速运行后,程序是不是就烧录到板子进去了
tong liu4:
回复 灰小子:
板子用的Launch Pad G2553的。。我说的是用ccs调试的时候,按全速运行可以,点击停止()板子 就没反应了,例如下面的程序 (但有的程序点击停止后板子和全速运行一样)
//利用定时器扫描机械按键的原理消除抖动
#include <msp430G2553.h>void P1_IODect();void P13_Onclick();void GPIO_Init();void WDT_Init();/** main.c*/void main(void) {WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timerGPIO_Init();WDT_Init();_enable_interrupts();_bis_SR_register(LPM3_bits);}void GPIO_Init(){P1DIR|=BIT0+BIT6;P1OUT|=BIT0;P1OUT&=~BIT6;
P1REN|=BIT3;P1OUT|=BIT3;
}void WDT_Init(){WDTCTL=WDT_ADLY_16;IE1|=WDTIE; //WDT中断使能}#pragma vector=WDT_VECTOR__interrupt void WDT_ISR(void){P1_IODect();//wdt定时中断独占中断向量,无需人工清楚工作标志位// P1IFG=0;
}void P1_IODect(){static unsigned int key_now=0; //变量出函数时候需要保留unsigned int key_pass=0;key_pass=key_now;
//查询IO输入寄存器if(P1IN&BIT3) key_now=1;else key_now=0;
if((key_pass==1)&&(key_now==0))P13_Onclick();
}void P13_Onclick(){P1OUT^=BIT0;P1OUT^=BIT6;
}
对了我还想问一下 全速运行后,程序是不是就烧录到板子进去了