OpenEdv-开源电子网

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

阿波罗F4输出两路PWM,总是只有一路可以用,求指导!!

[复制链接]

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-11-30
在线时间
4 小时
发表于 2016-12-2 09:12:43 | 显示全部楼层 |阅读模式
1金钱
#include "timer.h"
#include "led.h"


TIM_HandleTypeDef TIM3_Handler;        
TIM_OC_InitTypeDef TIM3_CH4Handler;          
TIM_OC_InitTypeDef TIM3_CH3Handler;


void TIM3_PWM_Init(u16 arr,u16 psc)
{
    TIM3_Handler.Instance=TIM3;            
    TIM3_Handler.Init.Prescaler=psc;      
    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;
    TIM3_Handler.Init.Period=arr;        
    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_PWM_Init(&TIM3_Handler);      

    TIM3_CH4Handler.OCMode=TIM_OCMODE_PWM1;
    TIM3_CH4Handler.Pulse=arr/2;            
    TIM3_CH4Handler.OCPolarity=TIM_OCPOLARITY_LOW;
    HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH4Handler,TIM_CHANNEL_4);
       
    HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_4);
       
                 TIM3_CH4Handler.OCMode=TIM_OCMODE_PWM1;
    TIM3_CH4Handler.Pulse=arr/2;           
    TIM3_CH4Handler.OCPolarity=TIM_OCPOLARITY_LOW;
    HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH3Handler,TIM_CHANNEL_3);
       
    HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_3);
}



void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
    GPIO_InitTypeDef GPIO_Initure;
        __HAL_RCC_TIM3_CLK_ENABLE();                       
    __HAL_RCC_GPIOB_CLK_ENABLE();                       
       
    GPIO_Initure.Pin=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_AF2_TIM3;       
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
       
         GPIO_Initure.Pin=GPIO_PIN_12;         
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;  
    GPIO_Initure.Pull=GPIO_PULLUP;         
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;   
        GPIO_Initure.Alternate= GPIO_AF2_TIM3;       
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
}




void TIM_SetTIM3Compare4(u32 compare)
{
        TIM3->CCR4=compare;
}
void TIM_SetTIM3Compare3(u32 compare)
{
        TIM3->CCR3=compare;
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2016-12-2 10:09:13 | 显示全部楼层
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-11-30
在线时间
4 小时
 楼主| 发表于 2016-12-2 10:59:19 | 显示全部楼层
Sun_Fly 发表于 2016-12-2 10:09
例子教程很详细

那个是单路的啊,双路的我一直不行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-12-4 22:36:52 | 显示全部楼层
检查代码
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2016-12-5 12:15:15 | 显示全部楼层
万古重智 发表于 2016-12-2 10:59
那个是单路的啊,双路的我一直不行

初始化两路
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-11-30
在线时间
4 小时
 楼主| 发表于 2016-12-6 09:03:10 | 显示全部楼层

原子哥,上面就是我看着你的例程改的,能给我说说哪里有问题吗?新手求指导呀
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-11-30
在线时间
4 小时
 楼主| 发表于 2016-12-6 16:19:54 | 显示全部楼层

原子哥,HAL库里面写PWM怎么实现I/O口与定时器通道的复用的?教程里面写了GPIO_Initure.Alternate= GPIO_AF2_TIM3; 开发指南里面写的这句话可以实现IO口与定时器3通道4的复用,我想改成通道3怎么改呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-12-8 22:21:36 | 显示全部楼层
万古重智 发表于 2016-12-6 16:19
原子哥,HAL库里面写PWM怎么实现I/O口与定时器通道的复用的?教程里面写了GPIO_Initure.Alternate= GPIO_ ...

我不用HAL.....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-11 02:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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