STM32 F103C8T6并非所有引脚都工作

时间:2017-08-01 18:20:29

标签: stm32 gpio keil

我正在使用带有STM32F103C8T6的arduino nano风格开发板。我注意到一些带有单个端口的引脚正常工作,但其他引脚根本不工作。我正在使用CMSIS v.5.0.1库和Keil v.5.23 IDE。

例如:

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个LED通过阴极连接到PB3,PB4和PB5,只有连接到PB5的LED发光。反向连接(阳极到引脚)并将其驱动为高电压

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是可操作的。尝试了不同的董事会 - 效果相同。

1 个答案:

答案 0 :(得分:3)

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