中级会员
 
- 积分
- 353
- 金钱
- 353
- 注册时间
- 2018-3-29
- 在线时间
- 82 小时
|
如题,TIM3 CH2 PB5引脚没有PWM输出,同样TIM3 CH1(PB4), CH3(PB0), CH4(PB1)就正常,代码如下,请教大神,谢谢!
现在解决办法是(PB5不初始化)把PB4和PB5引脚并联一起,通过PB4来输出PWM,但还是想搞清楚是什么原因,不清楚是不是单片机这个引脚坏了(但是两片都是一样的,不过这两片都是从板上拆下来的)
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
GPIO_InitTypeDef GPIO_Initure;
if(htim==(&TIM2_Handler))
{
__HAL_RCC_TIM2_CLK_ENABLE(); //使能定时器3
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOB时钟
GPIO_Initure.Pin=GPIO_PIN_15;
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //高速
GPIO_Initure.Alternate= GPIO_AF1_TIM2;
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
}
if(htim==(&TIM3_Handler))
{
__HAL_RCC_TIM3_CLK_ENABLE(); //使能定时器3
__HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟
GPIO_Initure.Pin=GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLDOWN; //拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //高速
GPIO_Initure.Alternate= GPIO_AF2_TIM3; //PB1复用为TIM3_CH1
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
}
}
//设置TIM x 通道x 的占空比 compare:比较值
void TIM_SetTIMxCompare(u8 timx, u8 ch, u32 compare)
{
switch(timx)
{
case 1 :
switch(ch)
{
case 1 : TIM1->CCR1=compare; break;
case 2 : TIM1->CCR2=compare; break;
case 3 : TIM1->CCR3=compare; break;
case 4 : TIM1->CCR4=compare; break;
}
break;
case 2 :
switch(ch)
{
case 1 : TIM2->CCR1=compare; break;
case 2 : TIM2->CCR2=compare; break;
case 3 : TIM2->CCR3=compare; break;
case 4 : TIM2->CCR4=compare; break;
}
break;
case 3 :
switch(ch)
{
case 1 : TIM3->CCR1=compare; break;
case 2 : TIM3->CCR2=compare; break;
case 3 : TIM3->CCR3=compare; break;
case 4 : TIM3->CCR4=compare; break;
}
break;
}
}
|
|