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.

[参考译文] MSP430FR2433:我希望 TI 专家检查此代码、并确认器件进入低功耗模式并保持30秒

Guru**** 2478765 points
Other Parts Discussed in Thread: MSP430FR2433

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1294528/msp430fr2433-i-want-an-ti-expert-to-check-this-code-and-confirm-me-that-the-device-enters-the-low-power-mode-and-stays-there-for-30-seconds

器件型号:MSP430FR2433

您好、TI 团队:

我希望有人检查一下为 MSP430FR2433编写的这一低功耗代码。 我要确认的是、此代码是否会使器件进入 LMP3模式30秒、然后唤醒以使 LED 闪烁。 可以有人确认一下。

#包含

void Init_GPIO (void);
void Init_Timer (void);

volatile unsigned int blinkCounter = 0;

int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

//根据 MCLK 的器件数据表需要配置一个 FRAM 等待状态
//在配置时钟系统之前8MHz 之外的操作。
FRCTL0 = FRCTLPW | NWAITS_1;

//配置 GPIO
init_gpio();

//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
PM5CTL0 &=~μ A LOCKLPM5;

__ bis_SR_register (SCG0);//禁用 FLL
CSCTL3 |= SELREF__REFOCLK;//将 REFO 设置为 FLL 基准源
CSCTL0 = 0;//清除 DCO 和 MOD 寄存器
CSCTL1 &=~(DCORSEL_7);//首先清除 DCO 频率选择位
CSCTL1 |= DCORSEL_5;//设置 DCO = 16MHz
CSCTL2 = FLLD_0 + 487;// DCOCLKDIV = 16MHz
__delay_cycles (3);
__BIC_SR_register (SCG0);//启用 FLL
(CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));// FLL 锁定
CSCTL4 = SELMS__DCOCLKDIV | SELM__REFOCLK;//将默认 REFO (~32768Hz)设置为 ACLK 源、ACLK = 32768Hz

//配置 TimerA
Init_Timer ();

//输入 LPM3
__ bis_SR_register (LPM3_bits | GIE);

while (1)
{
//由于我们处于 LPM3中,因此无法访问这部分代码
// TimerA 中断将处理 LED 闪烁并且 LPM3退出

void Init_Timer (void)
{
TA0CCTL0 = CCIE;//启用计时器 A0中断
TA0CCR0 = 62768;//设置1秒的周期(ACLK 频率为32768Hz)
TA0CTL = TASSEL__ACLK | MC__UP;// ACLK、向上计数模式

//计时器 A0中断服务例程
#if defined (__TI_Compiler_version__)|| defined (__IAR_SYSTEMS_ICC__)
#pragma vector=TIMER0_A0_vector
__interrupt void TimerA_ISR (void)
#Elif 已定义(_ GNU _)
void __attribute__((interrupt (TIMER0_A0_vector)) TimerA_ISR (void)
#else
#错误编译器不受支持!
#endif
{


if (blinkCounter == 1)
{
P1OUT |= BIT0;

否则
{
P1OUT &=~BIT0;

BlinkCounter ++;
if (blinkCounter > 30)
{
BlinkCounter = 0;

//在从中断返回时退出 LPM3
__ bic_SR_register_on_exit (LPM3_BITS);

void Init_GPIO()
{
P1DIR = BIT0;//将 P1.0设置为输出
P1OUT 且=~BIT0;//最初关闭 LED

谢谢!

此致、

普赫拉吉·辛格

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

    浪费别人的时间比运行此代码并发现它不起作用更容易有什么原因吗? 然后解决它?

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

    ,如果你有其他更重要的工作,请去做,不要浪费你的时间在这里!

    不管怎样、我让 TI 专家查看我的代码的原因是、代码进入和退出低功耗模式、但仍然注意到显著的能耗。 我希望别人帮助我、了解为什么即使 MSP430FR2433进入 LMP3模式、它也能耗高。

    谢谢!

    此致、

    普赫拉吉·辛格

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

    嗯、有一些您保密的有用信息。 不是获得帮助的最佳方式。

    1) 1)计时器未配置为一秒。

    2) ISR 在每次中断后唤醒主程序。

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

    基本上、中断设置为30秒。 我想它的工作那么为什么 LMP3模式下能耗仍然很高、只有4mW。 我认为应该更低一些、因为功耗更低模式下的电流消耗应该在1或2微安

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

    否。 计时器设置为每2秒生成一个中断。

    无论是谁在计时器配置部分写入该注释、似乎都认为它被设置为1秒。