STM32F103C8T6引脚A1外接LED无法闪烁求助
STM32F103C8T6 PA1引脚LED不闪烁问题排查
你的代码框架没问题(PC13能正常工作),问题主要出在PA1的GPIO配置和一处语法隐患上,具体如下:
1. GPIO配置错误(核心问题)
你当前对PA1的配置把它设成了复用推挽输出模式,但PA1作为普通GPIO控制LED时,需要设置为通用推挽输出:
// 原错误配置 GPIOA->CRL &= ~(GPIO_CRL_CNF1 | GPIO_CRL_MODE1); GPIOA->CRL |= GPIO_CRL_CNF1_0; // 这行导致CNF位为01,对应复用推挽 GPIOA->CRL |= GPIO_CRL_MODE1_0;
修正后的配置:
GPIOA->CRL &= ~(GPIO_CRL_CNF1 | GPIO_CRL_MODE1); // 仅设置MODE位为10MHz推挽输出,CNF位保持00(通用推挽) GPIOA->CRL |= GPIO_CRL_MODE1_0;
如果需要更高的输出速率(比如50MHz),可以改成:
GPIOA->CRL |= GPIO_CRL_MODE1_0 | GPIO_CRL_MODE1_1;
2. 时钟配置函数的语法隐患
SysClockConfig里的PLL就绪等待循环末尾少了分号,会导致下一行代码被纳入循环体,虽然硬件上可能很快进入就绪状态,但这是语法错误,需要补上:
// 原代码 while(!(RCC->CR & RCC_CR_PLLRDY)) // 修正后 while(!(RCC->CR & RCC_CR_PLLRDY));
额外硬件排查
- 确认PA1的接线:LED正极接PA1,负极接GND(如果是共阴LED);如果是共阳LED,需要调整引脚输出逻辑(比如输出低电平点亮)。
- 检查PA1引脚是否有虚焊、短路情况。
内容的提问来源于stack exchange,提问作者HDK
相关产品推荐
相关产品推荐

