各位专家、您好!
在 MSP430FR5969中、我们是否有任何将外部时钟配置为1MHz 的示例代码? 如果是、请提供该链接。
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.
各位专家、您好!
在 MSP430FR5969中、我们是否有任何将外部时钟配置为1MHz 的示例代码? 如果是、请提供该链接。
Kostas、您好!
感谢以上链接。 在数据表中、我们可以将 P1.2 用于 TA0CLK、但当我将 P1.2配置为输入方向并将时钟源设置为 TACLK 时、它不会捕获输入、您可以看到我的配置并让我知道错误。
void timer_init()
{
CSCTL0_H = CSKEY >> 8; //解锁 CS 寄存器
CSCTL1 = DCOFSEL_6; //将 DCO 设置为8MHz
CSCTL2 = SELA_LFXTCLK | SELS__HFXTCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1; //将所有分频器设置为1
CSCTL4 |= LFXTDRIVE_3 | HFXTDRIVE_3;
CSCTL4 &=~(LFXTOFF | HFXTOFF);
操作
{
CSCTL5 &=~(LFXTOFFG | HFXTOFFG); //清除 XT1和 XT2故障标志
SFRIFG1 &=~OFIFG;
} while (SFRIFG1&OFIFG); //测试振荡器故障标志
CSCTL0_H = 0;
}
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止 WDT
//配置 GPIO
P1OUT = 0;
P1DIR = BIT0; //表示 LED
P1DIR &=~BIT2; // P1.2输入方向
P1SEL0 |= BIT2;
P1SEL1 &=~BIT2;
P2DIR |= BIT0;
P2SEL0 |= BIT0; //输出 ACLK
P2SEL1 |= BIT0;
P3DIR |= BIT4;
P3SEL0 |= BIT4; //输出 SMCLK
P3SEL1 |= BIT4;
PJSEL0 |= BIT4 | BIT5 | BIT6 | BIT4; //用于 XT1和 XT2
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
timer_init();
TA0CCTL2 = CM_1 | CCIS_1 | SCS | CAP | CCIE;
//捕获上升沿,
//使用 CCI2B=ACLK、
//同步捕捉,
//启用捕获模式,
//启用捕捉中断
TA0CTL = tassel_TACLK; //使用 TACLK 作为时钟源、
//在连续模式中启动计时器
_bis_SR_register (LPM0_bits | GIE); //输入 LPM3、带中断
// while (1)
// __no_operation();
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector = TIMER0_A1_vector
_interrupt void Timer0_A1_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(TIMER0_A1_vector)) Timer0_A1_ISR (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (TA0IV、TA0IV_TAIFG)){
案例 TA0IV_TA0CCR1:
中断;
案例 TA0IV_TA0CCR2:
timerAcaptureValues[timerAcapturePointer++]= TA0CCR2;
//count1++;
中断;
案例 TA0IV_TA0IFG:
中断;
默认值:
中断;
}
}
您能不能说为什么在上升沿到来时我没有收到计时器中断?
您好、Bruce、
正如您在这里提到的、如果您暂停在调试器中、您的程序在哪里执行? 我的程序正在执行、但当它处于低功耗模式时会发生什么情况。我的程序仅执行此语句
_bis_SR_register (LPM0_bits | GIE);
是的、感谢您刚才提到的设置 TA0CTL MC feild 的建议、因此、我将设置该 feild、并告诉您我是否能够捕获。
编辑:[您之前提到过、您仍应获取捕获(因为它们由 ACLK 驱动)、但它们都将为=0。 您能解释一下、如果它由 ACLK 驱动、为什么我应该得到0。]
编辑2:[TA0CTL = tassel_TACLK;因此我需要选择哪种模式我有点困惑]
mc__continuous 可能是一个合理的选择。
----------
>P1SEL0 |= BIT2;
> P1SEL1 &=~BIT2;
根据数据表(SLAS704G)表6-49、这不会选择 TA0CLK。 尝试:
根据 SLAS704G 表6-49、> P1SEL0 &=~BIT2;// P1.2作为 TA0CLK
> P1SEL1 |= BIT2;
----------
这两个都不会阻止从 ACLK (CCIS=1)捕获数据。 您如何知道您没有获得捕获? 是否在 ISR 中设置断点? 还是查看捕获阵列?
----------
正如 Kostas 不断问的:您使用的平台是什么?
Manish、您好!
我正在研究一个解决方案。
您能否通过以下方式单独替换您的 TA0CTL:
TA0CTL = tassel_TACLK | MC__Continous | TAIE;
在测试中、我已经离开 HFTX、只将 LFTX 用于 ACLK。 我将 SMCLK 设置为 DCO。
通过更改 TA0CLK (P1.2)频率、我可以跳转到 ISR 并检测预期计数。
如果我有更多信息、我会回来的
此致
Kostas