【发布时间】:2020-06-08 09:40:28
【问题描述】:
在之前只使用 STM32 之后,我才刚刚开始使用 MSP430 微控制器,而且由于我仍然是所有这一切的初学者,因此变化很大,但我正在努力让一个简单的 PWM 输出正常工作.
在办公室,我们有一块备用的开发板,所以我正在使用它。它是 MSP-TS430PZ100B(USER GUIDE,第 142-144 页),使用的特定微控制器是 MSP430F6736。我正在使用的封装的引脚说明从第 12 页开始。
我正在关注我找到的一个简单的 PWM 示例程序 HERE。但是,我已经更改了输出引脚。查看我正在使用的微控制器的数据表,定时器 TA0 默认映射到 P1.0 和 P1.1,因此我没有像示例中那样使用 P1.2,而是将其更改为 P1.0(P1.0 也是板载 LED 所在的位置)。
所以,我的代码如下所示:
#include <msp430.h>
int main(void) {
WDTCTL = WDTPW + WDTHOLD; //Disable the Watchdog timer
P1DIR |= BIT0; //Set pin 1.0 to the output direction.
P1SEL |= BIT0; //Select pin 1.0 as PWM output.
TA0CCR0 = 1000-1; // PWM Period
TA0CCTL1 = OUTMOD_7; // CCR1 reset/set
TA0CCR1 = 250; // CCR1 PWM duty cycle
TA0CTL = TASSEL_2 + MC_1; // SMCLK, up mode
}
所以我对微控制器进行了编程,但没有任何反应。我在输出上放了一个示波器,甚至没有闪烁。只是保持在0V。该引脚作为输出工作正常,当我编写一个简单的程序来手动切换端口打开/关闭时,它工作正常,但是在尝试这个简单的示例程序时,我什么也得不到。
我假设我忽略了一些简单的东西,但我似乎看不到它。我在这里做错了什么?
【问题讨论】:
-
您确定引脚 1.0 可用于 PWM 吗?
-
@HeadCode 我提供了数据表的链接。 pin 描述部分并不多,但我将编辑问题并提及页码。但是,是的,P1.0 在我看来应该是可用的,因为它的 TA0 默认映射到引脚 1.0 和 1.1
-
我希望我有更多的时间来看看这个,但你试过用 TA0CCR0 代替 TA0CCR1 吗?第 73 页让我相信您的寄存器有误。
-
@HeadCode 我两个都用。我在 PWM 周期开始时使用 TA0CCR0。第73页是针图?