主题中讨论的其他器件: Energia
工具/软件:
您好、
我想使用生成脉冲信号 MSP430FR2311 。 脉冲应该有一个 1µs 宽度 和 A 周期为 1 秒 。 多个器件 TimerA 以生成 1µs 脉冲、然后 TimerB 生成 1 秒周期。 为了保持简单、我使用了 轮询方法 。
最初、我尝试使用 delay_cycles () 此函数可生成 1µs 脉冲、但未给出准确的结果。 所以、我切换到使用 计时器寄存器 实现更精确的控制。
多个器件 Code Composer Studio (CCS) 引导加载程序。 但是、IDE 无法识别计时器寄存器—它会抛出如下错误:
“TA0CCR1"未“未定义。 我也得到了我在 for 循环中定义的变量的错误。
我还尝试使用 Energia IDE 、但问题仍然相同—无法识别计时器寄存器。
有人能帮我解决这个问题吗?
谢谢!
代码如下:
#include
内部 main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
//将 P1.0 配置为输出
P1DIR |= BIT0;
P1OUT 且=~BIT0;
//将 TimerA 用于脉冲生成 (1µs)、将 TimerB 用于周期 (1s)
// TimerA
TA0CTL = TASSEL_SMCLK | MC__STOP | TACLR;//选择 SMCLK、使计时器保持停止
TA0CCR1 = 1;//在 1µs 之后切换
// TimerB
TB0CTL = TBSSEL_SMCLK | MC__STOP | TBCLR;
TB0CTL |= ID_8;//设置预分频器= 8
TB0CCR0 = 12500;// 1 秒(假设 1MHz SMCLK)
while (1)
{
TA0R = 0;
TA0CTL |= MC__UP;//在向上计数模式下启动 TimerA
P1OUT |= BIT0;//设置输出引脚
while (TA0R!= TA0CCR1){}
TA0CTL &&~MC___UP;// Stop TimerA
P1OUT 且=~BIT0;//清零输出引脚
对于 (int i = 0;i < 10;i++)
{
TB0R = 0;
TB0CTL |= MC___UP;//启动计时器 B
while (TB0R!= TB0CCR0){}
TB0CTL &&~MC___UP;// Stop TimerB
}
}
返回 0;
}