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.

[参考译文] MSP430G2152:寻求指导

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/660162/msp430g2152-looking-for-guidance

部件号:MSP430G2152
//#define datalog BIT3 //WFP
//#define backlight BIT4 //WFP //define 1.4
MAXMIN BIT5 //WFP
//#define DCAC BIT1//WFP 1.1
//#define VHz BIT2//WFP 1.2 //#
define DCAC_out BIT6//WFP
//WFP //#define 1.5 2.6 //#define DCAC BIT5//#= 1.3 /=/= BUITE=7 = 2.7 =



标准MSP430包括=========
*/
#include <msp430g2152.h>

/*
========= 主====
*/
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止监视计时器


P1OUT = BIT1 | BIT2 | BIT3 | BIT4 | BIT5;
P1DIR = BIT3 | BIT4 | BIT5;
P1REN = BIT1 | BIT2;
P1IES = BIT1 | BIT2;
P1IFG = 0;
P1IE = BIT1 | BIT2;
P2SEL2 = BIT3;
P2OUT = BIT6 | BIT7;
P2SEL &=~(BIT6 | BIT7);
P2DIR = BIT6 | BIT7;
P2IES = 0;
P2IFG = 0;

__bis_sr_register(LPM3_bits | GIE);
}

#pragma vector = Port1_vector
__interrupt void Port1_ISR( void ){

P1IE &=~(BIT1 | BIT2);////禁用这些引脚上的中断
__DELAY周期(1万);
TA0CCR1 = 0;
TA0CCTL0 &=~CCIFG;
TA0CTL |= MC_1;//启动计时器

开关(P1IN和(BIP1 | BIIT2)){
案例0:
已按下//VHz+DCAC按钮
IF (P1OUT & BIT3) P1OUT &=~(BIT3);
Else P1OUT ||(BIT3);
__DELAY周期(2万);
中断;
案例2:
已按下//VHz按钮
同时(!(P1IN & BIT2)&&!(TA0CCTL0 & CCIFG));
TA0CTL &=~MC1;
如果(!(TA0CCTL0 & CCIFG)){
P2OUT &=~(BIT7);
__DELAY周期(1万);
P2OUT |=(BIT7);
}
否则{
P1OUT &=~(BIT4);
__DELAY周期(1万);
P1OUT |=(BIT4);
}
中断;
案例4:
已按下//DCAC按钮
while (!(P1IN & BIT1)&&!(TA0CCTL0 & CCIFG));
TA0CTL &=~MC1;
如果(!(TA0CCTL0 & CCIFG)){
P2OUT &=~(BIT6);
__DELAY周期(1万);
P2OUT |=(BIT6);
}
否则{
P1OUT &=~(BIT5);
__DELAY周期(1万);
P1OUT |=(BIT5);
}
中断;
案例6:
//未按任何按钮
中断;
}
TA0CTL &=~(MC1 + MC0);//清除Mcx位以停止计时器
while (!(P1IN和(BIP1 | BIIT2)))
P1IFG &=~(BIT1 | BIT2);//将中断的寄存器标志设置为0:没有待处理的中断
P1IE ||(BIT1 | BIT2);//在这些引脚上重新启用中断
} 

我正在尝试复制此处显示 的项目http://www.mjlorton.com/forum/index.php?topic=284.0 ,但我使用的是g2152,而不是g2211。 我比较了解代码在做什么,但是我很难设置计时器和捕获比较寄存器。 此外,我不确定计时器/CCR如何用于区分长按或短按按钮(是否使用嵌套中断?) 原始代码使用的是包含Grace的配置,但显然不存在,我尝试推断事物最初是如何设置的。 我已确定GPIO和WDT配置,但未确定计时器或CCR (我可能还会遗漏其他内容) ,任何能将我推向正确方向的见解或提示都将很有帮助。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于缺少Grace配置,您缺少所有必要的计时器寄存器初始化。 请参阅TI提供的计时器示例,以使您的计时器按预期正常启动和运行: www.ti.com/.../slac467

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复Brown先生,我看了所有示例,问题是我不确定他在代码上下文中如何使用计时器/CCR/INTERRUPT。 如果我不知道在这种情况下如何使用计时器,我就无法设置计时器。 据我所能了解,没有任何示例与此用例匹配。 在MSP430处理器方面,我没有经验,也许我漏掉了一些明显的东西。 任何关于计时器/CCR/中断的使用(或者应该用于检测针脚中断ISR内的长按按钮)的详细说明都是非常有用的。再次感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这方面,我无能为力,因为我对您要复制的项目一无所知,即使您提供的链接也被我的服务器阻止。 使用MSP430用户指南了解寄存器如何设置定时控制,重点查找项目的宽限计时器初始化位置并将其复制到项目中。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢,原始作者从未包含过宽限配置文件,也不会对询问作出响应。 所以我想我在那里是不幸运的。 我修复了链接(不知道它是如何损坏的),但我要处理的代码也嵌入了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    同意在没有所有原始项目资源的情况下复制功能将会很困难。

    此致,
    Ryan