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.

[参考译文] CC430F5137:在模式 LPM3中使用 SMCLK

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/668290/cc430f5137-use-smclk-in-mode-lpm3

器件型号:CC430F5137

我使用计时器 TA1的 SMCLK 来捕获输入信号。 软件重复进入 LPM3模式以等待 RF 中断和捕获的输入信号。 根据 CC430用户指南中的"表3-1时钟请求系统和电源模式"、我需要将寄存器 USCTL8中的 SMCLKREQEN 位置为高电平、以便当 CC430F5137处于 LPM3模式时、SMCLK 可以被激活。  

我还使用超低功耗模式使 CC430F5137在 LPM3模式下仅消耗几 uA 电流。  

我在 cc430f5137.h 文件中看不到寄存器 USCTL8。 请告诉您是否应该将  寄存器 USCTL8中的 SMCLKREQEN 位置为高电平以及如何设置。

以下是我的软件的一部分:

TA1CTL = tassel_2 + MC_2 + TACLR;// SMCLK、contmode、clear TAR

TA1CCTL0 = CM1和 MSK_0 |// CM[1:0]= 10 =>在上升沿进行捕捉
CM0和 MSK_1 |
CCIS1和 MSK_0 |// CCIS[1:0]= 00 =>选择输入 CCI0A (引脚)
CCIS0和 MSK_0 |
// SCS = 1 =>将捕捉与时钟同步(推荐)
SCS 和 MSK_0 |
// SCCI 是同步 CCI 输入,此处无关
SCCI 和 MSK_0 |
CAP 和 MSK_1 |// CAP = 1 =>捕获模式
OUTMOD2 & MSK_0 |// OUTMOD[2:0]= 000 =>比较输出= OUT 位
OUTMOD1和 MSK_0 |
OUTMOD0和 MSK_0 |
CCIE 和 MSK_0 |// CCIE = 0 => CC 中断最初被禁用
CCI 和 MSK_0 |// CCI 是非同步 CC 输入、只读
当 OUTMOD[2:0]= 000时、// OUT = 0 => CC 输出= 0
OUT 和 MSK_0 |
COV 和 MSK_0 |// COV = 0 =>清除捕捉溢出标志
CCIFG 和 MSK_0;// CCIFG = 0 =>清除 CC 中断标志
WiredRx_State = 0;//状态0 =>等待捕获第一个上升沿

TA1CCR0 = 0;
TA1CCTL0 &=~CCIFG;
TA1CCTL0 |= CCIE;//为第一个起始位上升沿启用中断

//==================================================================================================================
//主循环
//==================================================================================================================
while (1)

CLRWDT_16

//make VLO (10kHz)作为 ACLK 的时钟源
UCSCTL4 = SELA_VLOCLK + SELESS__DCOCLKDIV + SELM_DCOCLKDIV;

STROBE (RF_Sidle);
STROBE (RF_SPWD);//关闭射频

WDTCTL =WDTPW+WDTTMSEL+WDTCNTCL+WDTIS2+WDTSSEL_2+WDTIS1;//1/16s
SFRIE1 |= WDTIE;//启用 WDT 中断
_bis_SR_register (LPM3_bits + GIE);//输入 LPM3并重新启用中断
// CPU 在这里休眠!
__delay_cycles (800ul);//等待
SFRIE1 ~WDTIE;//禁用 WDT 中断
//ACLK = XT1 (默认值)、SMCLK = DCOCLKDIV (默认值)、MCLK = DCOCLKDIV (默认值)
UCSCTL4 = SELA_XT1CLK + SELESS__DCOCLKDIV + SELM_DCOCLKDIV;
//delay_cycles (x)在代码中停止并等待 x 个 MCLK 周期

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Derong:
    我欺骗了文件、看起来您刚刚对寄存器进行了误操作、它是 UCSTL8。 此外、您还应注意到、SMCLK 在 LPM3中不可用、会导致您改为在 LPM1中运行。