2

私は msp430 ファミリ MCU (実際にはランチパッド ボード上の msp430g2553) を持っています。uart ドライバーを作成しましたが、動作します。しかし、タイマー ドライバーを追加した後、いくつかの問題が見つかりました。uart は、最初のタイマー割り込み後に動作を停止します。タイマー割り込みハンドラーでいくつかのフラグを復元する必要がありますか?

interrupt(TIMER0_A0_VECTOR) enablenested timer0_isr() {
    P1OUT ^= BIT6;
}

void timer_init(void) {
    int i;
    TACTL = TASSEL_2 + ID_3 + MC_1 + TAIE;
    TA0CCR0 = 0xffff;
    TACCTL0 = CM_0 + CCIE;
}
4

1 に答える 1

1

0 から 0xFFFF までカウントしているだけなので、レジスタ TA0CCR0 の値までカウントする「アップ モード」(MC_1) である必要はありません。私が正しく思い出せば、0 から 0xFFFF までカウントし、TA0CCRX レジスタの必要性を取り除きます。

それ以外の場合は、TACTL = TACLR; と言う習慣を身に付ける必要があります。(これにより、このレジスタがクリアされます)値を設定する前に、おそらくそれが役立ちます。

于 2014-12-12T19:01:58.677 に答える