OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2948|回复: 3

STM32F427的PA0复用为PWM无输出

[复制链接]

12

主题

40

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3123
金钱
3123
注册时间
2017-2-7
在线时间
387 小时
发表于 2020-8-27 21:25:20 | 显示全部楼层 |阅读模式
使用STM32F427的PA0管脚,复用为TIM2_CH1,输出PWM方波。
用示波器测量PA0管脚显示一直处于低电平状态。

使用PA1管脚复用为TIM2_CH2输出的PWM方波正常。

请问有哪位老师遇到过这种问题吗?谢谢谢谢。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2014-8-15
在线时间
101 小时
发表于 2020-8-29 09:01:25 | 显示全部楼层
是不是设置错误,还是把代码贴上来看看。
回复 支持 反对

使用道具 举报

12

主题

40

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3123
金钱
3123
注册时间
2017-2-7
在线时间
387 小时
 楼主| 发表于 2020-8-29 14:46:12 | 显示全部楼层
本帖最后由 fengqiyunyong52 于 2020-8-29 14:53 编辑
主战坦克 发表于 2020-8-29 09:01
是不是设置错误,还是把代码贴上来看看。

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没有波形输出。
请老师指点一二,谢谢谢谢。
回复 支持 反对

使用道具 举报

4

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2014-8-15
在线时间
101 小时
发表于 2020-9-4 09:43:13 | 显示全部楼层
你是用HAL编的吧,我用的是STD,和你的不一样。  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 11:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表