This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430G2553:使用中断切换 LED

Guru**** 2573695 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/701415/ccs-msp430g2553-toggle-led-with-interrupt

器件型号:MSP430G2553

工具/软件:Code Composer Studio

这是我用于使用中断切换 LED 的代码、但它无法正常工作。

请帮帮我

#include


/**
* main.c
*
int main (空)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

P1DIR |=(BIT0 | BIT6);//将 p1.0 & p1.6设置为输出
P1DIR &=~BIT3;//将 p1.3设置为输入
P1OUT |= BIT0;//打开 p1.0 LED
P1OUT &=~BIT6;//关闭 p1.6 LED
P1REN |= BIT3;//启用上拉/下拉 p1.3
P1OUT |= BIT3;//将 p1.3设置为上拉
P1SEL &= 0x00;//将 P1引脚设置为输入/输出
P1IE |= BIT3;//为 p1.3启用中断
P1IFG &=~BIT3;//清除 p1.3的中断标志
P1IES = BIT3;//将高电平设置为低电平至 p1.3


bis_SR_register (LPM4_bits+ GIE);


返回0;

#pragma vector = Port1_vector
_interrupt void Port1 (void)

if (((P1IFG & BIT3)!= 0)//检查是否设置了 p1IFG.3

P1OUT ^=(BIT0);//切换 p1.0


P1IFG &=~BIT3;//清除 P1.3中断标志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请描述一下您看到的内容吗? 您是否设置了断点来查看您是否正在进入 ISR?

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    HII Nathan、

    我已经尝试在 ISR 中添加一个断点、我发现有时会自动生成一个中断、以便在从低电平到高电平转换时切换 LED。

    但是我已经通过设置 P1IES |= BIT3来设置仅在高电平到低电平转换时启用中断、并且我还尝试在 ISR 中显式添加此行、但它也不起作用。

    此致  

    Avinash  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将代码放在(修订版1.5) G2 Launchpad 上,它按预期运行--每个按钮按压(高电平->低电平)都会切换 LED。

    该代码中没有去抖。 我发现 LP 按钮大多是无回弹的、但它始终是可能的、并且可能伪装成您的症状。

    未经请求:通常、您应在设置 P1IES 后清除 P1IFG 位。

    [编辑:略微修正了措辞。]