论坛元老
 
- 积分
- 3123
- 金钱
- 3123
- 注册时间
- 2017-2-7
- 在线时间
- 387 小时
|

楼主 |
发表于 2020-8-29 14:46:12
|
显示全部楼层
本帖最后由 fengqiyunyong52 于 2020-8-29 14:53 编辑
TIM_HandleTypeDef PWM_OUT_TIM2Handler;//TIM2定时器句柄
TIM_OC_InitTypeDef PWM_OUT_TIM2CHHandler;//TIM2 通道句柄
/******************************************************************************
* 函数介绍: PWM OUT管脚底层初始化
******************************************************************************/
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
GPIO_InitTypeDef GPIO_Initure;
if(htim->Instance==PWM_OUT_TIM2)
{
__HAL_RCC_TIM2_CLK_ENABLE(); //使能定时器时钟
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启定时器通道时钟
GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1;
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
GPIO_Initure.Alternate= GPIO_AF1_TIM2;//复用为TIM2
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
}
}
/******************************************************************************
* 函数介绍: PWM OUT 定时器TIM2初始化
******************************************************************************/
void BSP_PWM_OUT_TIM2_Init(uint16_t prescaler,uint16_t period)
{
PWM_OUT_TIM2Handler.Instance=TIM2;
PWM_OUT_TIM2Handler.Init.Prescaler=prescaler; //定时器分频
PWM_OUT_TIM2Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//向上计数模式
PWM_OUT_TIM2Handler.Init.Period=period; //自动重装载值
PWM_OUT_TIM2Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
PWM_OUT_TIM2Handler.Init.RepetitionCounter=0;
HAL_TIM_PWM_Init(&PWM_OUT_TIM2Handler); //初始化PWM
PWM_OUT_TIM2CHHandler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1
PWM_OUT_TIM2CHHandler.Pulse=period/2; //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半,即占空比为50%
PWM_OUT_TIM2CHHandler.OCPolarity=TIM_OCPOLARITY_HIGH;
PWM_OUT_TIM2CHHandler.OCNPolarity=TIM_OCNPOLARITY_HIGH;
PWM_OUT_TIM2CHHandler.OCIdleState=TIM_OCIDLESTATE_SET;
PWM_OUT_TIM2CHHandler.OCNIdleState=TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(&PWM_OUT_TIM2Handler,&PWM_OUT_TIM2CHHandler,TIM_CHANNEL_1);//配置定时器通道
PWM_OUT_TIM2CHHandler.Pulse=period/2; //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半,即占空比为50%
HAL_TIM_PWM_ConfigChannel(&PWM_OUT_TIM2Handler,&PWM_OUT_TIM2CHHandler,TIM_CHANNEL_2);//配置定时器通道
HAL_TIM_PWM_Start(&PWM_OUT_TIM2Handler,TIM_CHANNEL_1);//开启PWM通道1
HAL_TIM_PWM_Start(&PWM_OUT_TIM2Handler,TIM_CHANNEL_2);//开启PWM通道2
}
这是配置的源代码,分别配置了PA0和PA1的PWM输出,PA1的输出波形正常,PA0没有波形输出。
请老师指点一二,谢谢谢谢。
|
|