2017-08-01 12 views
1

私はSTM32F103C8T6のarduino nanoスタイルのデボードボードを使用しています。私は、単一のポートを持ついくつかのピンが正しく動作していることに気付きましたが、他のポートは全く動作しませんでした。私はCMSIS v.5.0.1ライブラリとKeil v.5.23 IDEを使用しています。

例:STM32 F103C8T6すべてのピンが正常に動作していない

int main (void){ 
    RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; 
    GPIOB->CRL &= ~(GPIO_CRL_MODE3 | GPIO_CRL_MODE4 | GPIO_CRL_MODE5 | GPIO_CRL_CNF3 | GPIO_CRL_CNF4 | GPIO_CRL_CNF5); 
    GPIOB->CRL |= (GPIO_CRL_MODE3 | GPIO_CRL_MODE4 | GPIO_CRL_MODE5); 
    GPIOB->BSRR = (0x38 << 16); 
    while (1){ 
    } 
} 

私は抵抗を介してPB3、PB4およびPB5にカソードによって接続された3個のLEDを持って、それだけでPB5に接続されているが光っています。 (ピンの陽極)を接続し、高

GPIOB->BSRR = 0x38; 

それを逆駆動するもの、改変された出力速度を変化させず、オープンドレイン出力として設定しても結果を与えません。私はst-linkデバッグモードでピンを直接トグルしようとしました - 同じ結果、PB5は正しく動作し、PB3 - PB4は動作しません。私はさらにポート全体を運転しようとしました。

int main (void){ 
    RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; 
    GPIOB->CRL = 0x55555555; 
    GPIOB->BSRR = 0xFFFF << 16; 
    while (1){ 
    } 
} 

PB3 - PB4は沈黙を保っています。もちろん、LEDは動作可能です。別のボードを試した - 同じ効果。

答えて

3

デフォルトでは、JTAGデバッグにはPB3とPB4がそれぞれJTDOとJNTRSTとして使用されます。これらのピンをGPIOに使用する場合は、SWJ_CFGフィールドをAFIO_MAPRに設定して再マッピングする必要があります。

+2

ありがとうございました。RCC→APB2ENR | = RCC_APB2ENR_AFIOEN; \t AFIO-> MAPR = AFIO_MAPR_SWJ_CFG_1;今それは動作します – Questdoino

関連する問題