stm32f103使用TIM1和TIM2输出PWM

来源:互联网 发布:mysql分类汇总 编辑:程序博客网 时间:2024/05/01 18:38
摘要

TIM1和TIM2的配置代码
TIM1的注意事项

直接上代码

void pwm_TIM1_init(){    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    // 设置GPIO功能: TIM1_CH1,TIM1_CH4    GPIO_InitTypeDef cfg_gpio;    cfg_gpio.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11;    cfg_gpio.GPIO_Mode = GPIO_Mode_AF_OD;    cfg_gpio.GPIO_Speed = GPIO_Speed_2MHz;    GPIO_Init(GPIOA, &cfg_gpio);    //    // 复位定时器。    TIM_DeInit(TIM1);    //    // 配置计时器。    TIM_TimeBaseInitTypeDef param;    TIM_TimeBaseStructInit(&param);    param.TIM_Prescaler = ESC_PSC;    param.TIM_Period = 72000;    param.TIM_CounterMode = TIM_CounterMode_Up;    TIM_TimeBaseInit(TIM1,&param);    //    // 配置PWM。    TIM_OCInitTypeDef pwmParam;    TIM_OCStructInit(&pwmParam);    pwmParam.TIM_OCMode = TIM_OCMode_PWM1;    pwmParam.TIM_OutputState = TIM_OutputState_Enable;    pwmParam.TIM_Pulse = MOTOR_CCR_MIN;    pwmParam.TIM_OCPolarity = TIM_OCPolarity_High;    TIM_OC1Init(TIM1,&pwmParam);    TIM_OC4Init(TIM1,&pwmParam);    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);    TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);    //    // 启动计时器。    TIM_CtrlPWMOutputs(TIM1, ENABLE);//@@    TIM_Cmd(TIM1,ENABLE);      //    TIM_SetCompare1(TIM1,0);    TIM_SetCompare4(TIM1,72000);}
void pwm_TIM2_init(){    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    // 设置GPIO功能: TIM2_CH1,TIM2_CH2,TIM2_CH3,TIM2_CH4    GPIO_InitTypeDef cfg_gpio;    cfg_gpio.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;    cfg_gpio.GPIO_Mode = GPIO_Mode_AF_PP;    cfg_gpio.GPIO_Speed = GPIO_Speed_2MHz;    GPIO_Init(GPIOA, &cfg_gpio);    //    // 复位定时器。    TIM_DeInit(TIM2);    //    // 配置计时器。    TIM_TimeBaseInitTypeDef param;    TIM_TimeBaseStructInit(&param);    param.TIM_Prescaler = ESC_PSC;    param.TIM_Period = 72000; //    param.TIM_CounterMode = TIM_CounterMode_Up;    TIM_TimeBaseInit(TIM2,&param);    //    // 配置PWM。    TIM_OCInitTypeDef pwmParam;    TIM_OCStructInit(&pwmParam);    pwmParam.TIM_OCMode = TIM_OCMode_PWM1;    pwmParam.TIM_OutputState = TIM_OutputState_Enable;    pwmParam.TIM_Pulse = MOTOR_CCR_MIN;    pwmParam.TIM_OCPolarity = TIM_OCPolarity_High;    TIM_OC1Init(TIM2,&pwmParam);    TIM_OC2Init(TIM2,&pwmParam);    TIM_OC3Init(TIM2,&pwmParam);    TIM_OC4Init(TIM2,&pwmParam);    TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);    TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);    TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);    TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);    //    // 启动计时器。    TIM_Cmd(TIM2,ENABLE);      //    TIM_SetCompare1(TIM2,0);    TIM_SetCompare2(TIM2,720);    TIM_SetCompare3(TIM2,7200);    TIM_SetCompare4(TIM2,720000);}

除了gpio不同外,TIM1多了TIM_CtrlPWMOutputs(TIM1, ENABLE);

0 0
原创粉丝点击