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

2019-07-20 18:17发布

#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;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
Sun_Fly
1楼-- · 2019-07-20 23:29
例子教程很详细
万古重智
2楼-- · 2019-07-21 01:44
Sun_Fly 发表于 2016-12-2 10:09
例子教程很详细

那个是单路的啊,双路的我一直不行
正点原子
3楼-- · 2019-07-21 05:52
 精彩回答 2  元偷偷看……
Sun_Fly
4楼-- · 2019-07-21 08:24
万古重智 发表于 2016-12-2 10:59
那个是单路的啊,双路的我一直不行

初始化两路
万古重智
5楼-- · 2019-07-21 12:16
正点原子 发表于 2016-12-4 22:36
检查代码

原子哥,上面就是我看着你的例程改的,能给我说说哪里有问题吗?新手求指导呀
万古重智
6楼-- · 2019-07-21 14:53
正点原子 发表于 2016-12-4 22:36
检查代码

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

一周热门 更多>