STM32 TIM1 PWM 输出

     STM32F103x包含最多两个高级定时器(TIM1和TIM8),每个高级定时器可同时产生多达7路PWM输出,以TIM1为例,有TIM1_CH1和TIM1_CH1N、TIM1_CH2和TIM1_CH2N、TIM1_CH3和TIM1_CH3N、TIM1_CH4。通道1其实有两个输出通道对应:TIM1_CH1与TIM1_CH1N,TIM1_CH1N称为TIM1_CH1的互补通道,输出与TIM1_CH1相反的波形

STM32高级定时器TIM1的PWM输出配置(高级定时器与普通定时器的配置有所不同):

GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; 
TIM_OCInitTypeDef TIM_OCInitStructure; 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_6|GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA,&GPIO_InitStructure);

TIM_TimeBaseInitStructure.TIM_Period = 100; //设置自动重装载寄存器周期的值

TIM_TimeBaseInitStructure.TIM_Prescaler = 3000;//设置用来作为TIMx时钟频率预分频值
TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
TIM_TimeBaseInit(TIM1, & TIM_TimeBaseInitStructure);

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//PWM输出使能
         //TIM_OCInitStructure.TIM_OutputState=TIM_OutputNState_Disable;  //PWM输出使能
TIM_OCInitStructure.TIM_Pulse=10;
         //TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
        // TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
//TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;
TIM_OC3Init(TIM1,&TIM_OCInitStructure);


TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=10;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
TIM_OC4Init(TIM1,&TIM_OCInitStructure);

TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);

TIM_Cmd(TIM1,ENABLE);//ʹÄÜ»òÕßʧÄÜTIMxÍâÉè

//下面这句是高级定时器才有,输出PWM必须打开

TIM_CtrlPWMOutputs(TIM1, ENABLE);                             //pwm输出


  • 31
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
这些引脚功能可以整理如下: - WKUP: 外部唤醒输入 - USART2_CTS: USART2 软件流控制信号 - ADC12_IN0: ADC12 输入通道 0 - TIM2_CH1_ETR: 定时器 2 通道 1 和外部时钟输入 - USART2_RTS: USART2 请求发送控制信号 - ADC12_IN1: ADC12 输入通道 1 - TIM2_CH2: 定时器 2 通道 2 - USART2_TX: USART2 发送数据引脚 - ADC12_IN2: ADC12 输入通道 2 - TIM2_CH3: 定时器 2 通道 3 - USART2_RX: USART2 接收数据引脚 - ADC12_IN3: ADC12 输入通道 3 - TIM2_CH4: 定时器 2 通道 4 - SPI1_NSS: SPI1 片选信号 - USART2_CK: USART2 时钟引脚 - ADC12_IN4: ADC12 输入通道 4 - SPI1_SCK: SPI1 时钟引脚 - ADC12_IN5: ADC12 输入通道 5 - SPI1_MISO: SPI1 主输入从输出引脚 - ADC12_IN6: ADC12 输入通道 6 - TIM3_CH1: 定时器 3 通道 1 - SPI1_MOSI: SPI1 主输出从输入引脚 - ADC12_IN7: ADC12 输入通道 7 - TIM3_CH2: 定时器 3 通道 2 - ADC12_IN8: ADC12 输入通道 8 - TIM3_CH3: 定时器 3 通道 3 - ADC12_IN9: ADC12 输入通道 9 - TIM3_CH4: 定时器 3 通道 4 - I2C2_SCL: I2C2 时钟引脚 - USART3_TX: USART3 发送数据引脚 - I2C2_SDA: I2C2 数据引脚 - USART3_RX: USART3 接收数据引脚 - SPI2_NSS: SPI2 片选信号 - I2C2_SMBAI: I2C2 SMBus 警告引脚 - USART3_CK: USART3 时钟引脚 - TIM1_BKIN: 定时器 1 备份输入 - SPI2_SCK: SPI2 时钟引脚 - USART3_CTS: USART3 软件流控制信号 - TIM1_CH1N: 定时器 1 通道 1 互补输出 - SPI2_MISO: SPI2 主输入从输出引脚 - USART3_RTS: USART3 请求发送控制信号 - TIM1_CH2N: 定时器 1 通道 2 互补输出 - SPI2_MOSI: SPI2 主输出从输入引脚 - TIM1_CH3N: 定时器 1 通道 3 互补输出 - USART1_CK: USART1 时钟引脚 - TIM1_CH1: 定时器 1 通道 1 - MCO: 主时钟输出引脚 - USART1_TX: USART1 发送数据引脚 - TIM1_CH2: 定时器 1 通道 2 - USART1_RX: USART1 接收数据引脚 - TIM1_CH3: 定时器 1 通道 3 - USART1_CTS: USART1 软件流控制信号 / USBDM / CAN_RX / 定时器 1 通道 4 - USBDP: USBDP / CAN_TX / 定时器 1 外部时钟输入 - TIM1_CH4: 定时器 1 通道 4 - I2C1_SMBAI: I2C1 SMBus 警告引脚 - I2C1_SCL: I2C1 时钟引脚 / 定时器 4 通道 1 - I2C1_SDA: I2C1 数据引脚 / 定时器 4 通道 2 - TIM4_CH3: 定时器 4 通道 3 - TIM4_CH4: 定时器 4 通道 4

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值