2017-08-01 74 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){ 
    } 
} 

我有3个发光二极管通过电阻由阴极至PB3,PB4和PB5连接,并且只有连接到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

默认情况下,PB3和PB4用于JTAG调试,分别用作JTDO和JNTRST(分别)。如果要将这些引脚用于GPIO,则需要使用AFIO_MAPR中的SWJ_CFG字段重新映射它们。

+2

谢谢,添加了RCC-> APB2ENR | = RCC_APB2ENR_AFIOEN; \t AFIO-> MAPR = AFIO_MAPR_SWJ_CFG_1;现在它工作 – Questdoino

相关问题