You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F401xB/C开发板PA15引脚无PWM信号输出求助

STM32F401 PA15(TIM2_CH1)无PWM输出问题排查

核心问题分析

你的代码存在3个关键错误,导致PA15无法输出PWM:

  • TIM2时钟使能寄存器错误:TIM2属于APB1总线外设,时钟使能需操作RCC->APB1ENR,但你错误写入了RCC->AHB1ENR(GPIO等AHB1外设的时钟寄存器),等于未给TIM2开启时钟。
  • PA15复用功能配置不完整:PA15作为TIM2_CH1需要配置为AF1,但你仅设置了AFSEL15的第0位,未先清除原有默认值,可能导致复用功能配置失效。正确做法是先清零对应位段,再设置目标复用功能。
  • PA15默认绑定JTAG引脚未释放:PA15默认是JTAG的JTDI引脚,必须先禁用JTAG功能释放引脚,否则引脚被调试功能占用,无法输出PWM。

修复后的代码

#include "stm32f4xx.h"

// 初始化GPIO引脚
void GPIO_Init(){
  // 给GPIOA、GPIOB开时钟
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOAEN;
  // 给SYSCFG开时钟,用于配置JTAG引脚释放
  RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;

  // 释放PA15:配置为SWD模式(保留SWD调试,释放JTAG的PA15、PB3、PB4)
  SYSCFG->CFGR1 |= SYSCFG_CFGR1_JTAGSWD_CFG_1;

  // 配置PA15为复用模式
  GPIOA->MODER &= ~GPIO_MODER_MODER15_Msk;  // 先清零两位
  GPIOA->MODER |= GPIO_MODER_MODER15_1;     // 设置为复用模式(10)

  // 配置PA15复用为TIM2_CH1(AF1)
  GPIOA->AFR[1] &= ~GPIO_AFRH_AFSEL15_Msk;  // 清零引脚15的AF位段
  GPIOA->AFR[1] |= (1 << GPIO_AFRH_AFSEL15_Pos);  // 设置为AF1
}


// 初始化TIM2定时器
void TIM2_Init(){
  // 给TIM2开时钟(APB1总线)
  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
  
  // 设置预分频器:16MHz /16 =1MHz(1us计数周期)
  TIM2->PSC = 16-1;

  // 自动重装载值:20000*1us=20ms周期
  TIM2->ARR = 20000;

  // 计数器清零
  TIM2->CNT = 0;

  // 配置CCMR1为PWM模式1
  TIM2->CCMR1 &= ~TIM_CCMR1_OC1M_Msk;
  TIM2->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;  // PWM模式1(OC1M=110)
  TIM2->CCMR1 |= TIM_CCMR1_OC1PE;  // 使能预装载寄存器

  // 使能通道1输出,极性为高
  TIM2->CCER |= TIM_CCER_CC1E;

  // 设置占空比:10000*1us=10ms(50%占空比)
  TIM2->CCR1 = 10000;
}


void setup(){
  // 设置系统时钟为16MHz(默认内部HSI)
  RCC->CFGR &= ~RCC_CFGR_SW_Msk;
  RCC->CFGR |= RCC_CFGR_SW_HSI;

  GPIO_Init();
  TIM2_Init();

  // 启动TIM2计数器
  TIM2->CR1 |= TIM_CR1_CEN;
}

额外说明

  • 释放PA15时选择SWD模式,既能保留调试功能,又能释放PA15引脚;若无需调试,也可直接禁用所有JTAG/SWD功能。
  • 配置寄存器时建议先清零对应位段再设置,避免默认值干扰配置结果。

内容的提问来源于stack exchange,提问作者Cristian Cutitei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:55:14