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.
您好!
感谢您阅读此问题。 在 slau144中、第页上有一个 OUT2信号。 我的印象是、每个 CCR 寄存器都有一个相应的输出单元、该单元可以输出到引脚。 至少适用于 MSP430G2553。
我查看了这些引脚以了解它们可能是什么、这似乎得到了确认
现在、我键入一些代码、为我提供2个不同的占空比、无需 CPU 的帮助
#include <msp430.h> /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; // -------------------------- Pin Setup ------------------------ P1DIR |= BIT2; P1SEL |= BIT2; P1DIR |= BIT5; P1SEL |= BIT5; //---------------------------- TIMER A Setup -------------------- TACCR0 = 1023; TACCR1 = 127; TACCR2 = 512; TACCTL1 = OUTMOD_7; TA0CTL = TASSEL_2 + MC_1+ID_0; while(1){} return 0; }
要根据 TACCR2 (即 TA0CCR2)获得输出、您需要引脚功能 TA0.2、该功能在20引脚封装中不可用(P3.6)。
您可以使用 TA1、它提供 TA1.2 (P2.4或 P2.5)以及 TA1.1 (P2.1或 P2.2)。 您还必须设置 TA1CCTL2=OUTMOD_7。
嗯、这可以清除东西。 因此、只需确保
引脚 P1.1和 P1.5可由 CCR0 (TA0.0)、和控制
引脚 P1.2由 CCR1控制?
CCR0在向上计数模式下实际上不起作用、因此我只具有用于输出的 P1.2 -对吧?
但是、在 TA1上、我有3个计数器比较寄存器、因此我可以使用 TA1.1和 TA1.2。
主席先生、我更改了我的代码以使用 TA1、它起作用。 感谢您的帮助!
#include <msp430.h> /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; // -------------------------- Pin Setup ------------------------ //P1DIR |= BIT2; //P1SEL |= BIT2; P2DIR |= BIT1; P2SEL |= BIT1; P2DIR |= BIT4; P2SEL |= BIT4; //---------------------------- TIMER A Setup -------------------- TA1CCR0 = 1023; TA1CCR1 = 512; TA1CCR2 = 128; TA1CCTL2 = OUTMOD_7; TA1CCTL1 = OUTMOD_7; TA1CTL = TASSEL_2 + MC_1+ID_0; while(1){} return 0; }