STM32 F103C8T6 并非所有引脚都工作
STM32 F103C8T6 not all pins working
我正在使用内置 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 是可操作的。试了不同的板子,效果一样。
默认情况下,PB3 和 PB4 用于 JTAG 调试,分别为 JTDO 和 JNTRST。如果您想将这些引脚用于 GPIO,则需要使用 AFIO_MAPR
中的 SWJ_CFG
字段重新映射它们。
我正在使用内置 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 是可操作的。试了不同的板子,效果一样。
默认情况下,PB3 和 PB4 用于 JTAG 调试,分别为 JTDO 和 JNTRST。如果您想将这些引脚用于 GPIO,则需要使用 AFIO_MAPR
中的 SWJ_CFG
字段重新映射它们。