stm32f103 tim1ch1npwm输出
时间: 2025-02-01 12:26:27 浏览: 65
### STM32F103 TIM1 CH1N PWM 输出配置
对于STM32F103系列微控制器,要实现TIM1通道1N (CH1N) 的PWM输出,需按照特定流程进行配置。具体来说:
#### GPIO端口初始化
首先,需要将相应的GPIO端口配置为复用推挽输出模式以便于连接至TIM1_CH1N。通常情况下,PA9被指定为此用途。
```c
// 初始化GPIOA的Pin 9作为TIM1_CH1N的功能引脚
void GPIO_Configuration(void){
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
/* Configure PA9 as alternate function push-pull */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
```
#### 定时器初始化与PWM参数设定
接着是对定时器TIM1本身及其PWM特性的初始化工作。这里涉及到设置自动重载值(ARR),即周期长度;以及比较值(CCR1),它决定了占空比大小。为了生成频率为100Hz的PWM信号,在给定系统时钟条件下计算合适的ARR和CCR值至关重要[^1]。
```c
static void MX_TIM1_PWM_Init(void)
{
__HAL_RCC_TIM1_CLK_ENABLE();
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
htim1.Instance = TIM1;
// 设置定时器的工作方式
htim1.Init.Prescaler = 72-1; // 假设APB2=72MHz,则分频系数为72
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 1000 - 1; // 自动重装载值决定PWM周期
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
HAL_TIM_PWM_Init(&htim1);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
// 配置互补通道1N(PWM Mode 1 or 2)
sConfigOC.OCMode = TIM_OCMODE_PWM1; // 使用PWM模式1
sConfigOC.Pulse = 500; // 占空比初始值
sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;// 极性低有效
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_SET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_MspPostInit(&htim1);
}
int main(void)
{
HAL_Init();
SystemClock_Config(); // 系统时钟配置省略
GPIO_Configuration(); // 上述定义的GPIO初始化函数调用
MX_TIM1_PWM_Init(); // 定义好的TIM1 PWM初始化函数调用
while (1){}
}
```
上述代码展示了如何利用STM32CubeMX库来完成TIM1 CH1N的PWM输出配置过程。注意这里的`Pulse`变量代表了CCRx寄存器内的数值,其直接影响最终产生的PWM波形宽度。此外,还需关注`OCPolarity` 和 `OCNPolarity` 参数的选择,它们共同影响着PWM脉冲的实际逻辑电平状态[^4]。
阅读全文
相关推荐



















