| 
 
| 我用CC2541做了个小板子,有10个按键,一个灯。 试外部中断,发现时灵时不灵,有误操作。
 程序如下:
 /****************************************************************************
 * 名    称: InitKey()
 * 功    能: 设置KEY相应的IO口,采用中断方式
 * 入口参数: 无
 * 出口参数: 无
 ****************************************************************************/
 void InitKey()
 {
 P0IEN |= 0xf3;    // P0.1 设置为中断方式 1:中断使能
 PICTL |= 0xf3;    //下降沿触发
 IEN1 |= 0x20;    //允许P0口中断;
 P0IFG = 0x00;    //初始化中断标志位
 
 P1IEN |= 0x0f;    // P0.1 设置为中断方式 1:中断使能
 PICTL |= 0x0f;    //下降沿触发
 IEN2 |= 0x10;    //允许P1口中断;
 P1IFG = 0x00;    //初始化中断标志位
 
 EA = 1;          //打开总中断
 }
 
 /****************************************************************************
 * 名    称: P0_ISR(void) 中断处理函数
 * 描    述: #pragma vector = 中断向量,紧接着是中断处理程序
 ****************************************************************************/
 #pragma vector = P0INT_VECTOR
 __interrupt void P0_ISR(void)
 {
 DelayMS(20);     //延时去抖
 LED1 = ~LED1;    //改变LED1状态
 P0IFG = 0;       //清中断标志
 P0IF = 0;        //清中断标志
 }
 /****************************************************************************
 * 名    称: P1_ISR(void) 中断处理函数
 * 描    述: #pragma vector = 中断向量,紧接着是中断处理程序
 ****************************************************************************/
 #pragma vector = P1INT_VECTOR
 __interrupt void P1_ISR(void)
 {
 DelayMS(20);     //延时去抖
 LED1 = ~LED1;    //改变LED1状态
 P1IFG = 0;       //清中断标志
 P1IF = 0;        //清中断标志
 }
 
 我延时20ms,不好使。请问高手,如何解决?谢谢!
 
 | 
 |