主题中讨论的其他器件: MSP430G2553
大家好、我正在尝试使用 PWM 周期 为20ms、占空比为0.35ms 和2.35ms 的 TA0计时器通过 P1.7驱动 SG90电机。 我只想让电机在0-180度的距离之间持续转动。 我在 YouTube 上遵循了这个基本指南: https://youtu.be/V3v5ItyMKVc 并 相应地从 msp430g2553转换为 msp430fr4133。 我还将 SG90直接连接到了+5V 引脚和 GND 引脚、并将 PWM 信号连接到了板上的 P1.7引脚。
附件是我的代码:
--------------------------------------------------------------------
#include
#include
无符号 int TimerA0_PERIOD = 20000;// PWM 周期
void main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//配置计时器 A0 (比较模式)和 LED
// TA0CTL = TACLR;//清除计时器
// TA0R = 0;// Timer_A 的计数
P1DIR |= BIT7;
P1SEL0 |= BIT7;
while (1)
{
TA0CCR0 = TimerA0_PERIOD;
TA0CCR1 = 350;// CCR1 PWM 占空比!min 350 max 2600 angle 190、350 2350-180度
TA0CCTL1 |= OUTMOD_7;//复位/设置输出模式
TA0CTL |= tassel_2 | MC_1;// SMCLK (1MHz)、向上计数模式(向上计数到 TA1CCR0)
_DELAY_CYCLES (1500000);
TA0CCR1 = 2350;// CCR1 PWM 占空比!min 350 max 2600 angle 190、350 2350-180度
TA0CCTL1 |= OUTMOD_7;//复位/设置输出模式
TA0CTL |= TASSEL_2 | MC_1;
_DELAY_CYCLES (1500000);
}
//_ bis_SR_register (LPM0_bits);//切换到低功耗模式0。
}
--------------------------------------------------------------------
我认为我的代码和 YouTube 的主要区别在于、我缺少1MHz 的 BCSCTL1/DCOCTL 校准设置、但是 对于 fr4133、系列指南中没有显示任何内容。
在测试期间、每当我运行代码、我在 P1.7上连接了一个仪表、电压"看起来"上升、然后变为零、然后上升、因此 SG90保持静止状态时、似乎什么都不起作用。
我们非常感谢您的任何帮助。 谢谢!