OpenEdv-开源电子网

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

尝试用Stm32f103两个定时器产生两路PWM,HAL库版本

[复制链接]

2

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-7-10
在线时间
4 小时
发表于 2019-7-31 07:59:21 | 显示全部楼层 |阅读模式
初探HAL库,想用两个定时器输出两路PWM,并把两路PWM接到了LED,结果一灯亮,一灯不亮(本来两个灯应该闪烁)程序如下,请大家帮忙看一下哪的问题。
#include "pwm.h"
#include "led.h"
       
TIM_HandleTypeDef         TIM1_Handler,TIM3_Handler;              //¶¨ê±Æ÷¾ä±ú
TIM_OC_InitTypeDef         TIM1_CH1Handler,TIM3_CH4Handler;        //¶¨ê±Æ÷1í¨μà1¾ä±ú


//TIM1 PWM2¿·Ö3õê¼»ˉ
//arr£o×Ô¶ˉ֨װÖμ¡£
//psc£oê±ÖóÔ¤·ÖÆμêy
//¶¨ê±Æ÷òç3öê±¼ä¼ÆËã·½·¨:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=¶¨ê±Æ÷1¤×÷ÆμÂê,μ¥λ:Mhz
void TIM1_PWM_Init(u16 arr,u16 psc)
{  
    TIM1_Handler.Instance=TIM1;                 //¶¨ê±Æ÷1
    TIM1_Handler.Init.Prescaler=psc;               //¶¨ê±Æ÷·ÖÆμ
    TIM1_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//ÏòéϼÆêyÄ£ê½
    TIM1_Handler.Init.Period=arr;                  //×Ô¶ˉÖØ×°ÔØÖμ
    TIM1_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_PWM_Init(&TIM1_Handler);               //3õê¼»ˉPWM

                TIM1_Handler.Instance=TIM3;                 //¶¨ê±Æ÷3
    HAL_TIM_PWM_Init(&TIM3_Handler);               //3õê¼»ˉPWM

    TIM1_CH1Handler.OCMode=TIM_OCMODE_PWM1; //Ä£ê½Ñ¡Ô&#241WM1
    TIM1_CH1Handler.Pulse=arr/2;            //éèÖñè½ÏÖμ,′ËÖμóÃà′è·¶¨Õ¼¿Õ±è£¬Ä¬èϱè½ÏÖμÎa×Ô¶ˉÖØ×°ÔØÖμμÄò»°ë,¼′Õ¼¿Õ±èÎa50%
    TIM1_CH1Handler.OCPolarity=TIM_OCPOLARITY_LOW; //êä3ö±è½Ï¼«DÔÎaμí
    HAL_TIM_PWM_ConfigChannel(&TIM1_Handler,&TIM1_CH1Handler,TIM_CHANNEL_1);//ÅäÖÃTIM1í¨μà1
       
                TIM3_CH4Handler.OCMode=TIM_OCMODE_PWM1; //Ä£ê½Ñ¡Ô&#241WM1
    TIM3_CH4Handler.Pulse=arr/4;            //éèÖñè½ÏÖμ,′ËÖμóÃà′è·¶¨Õ¼¿Õ±è£¬Ä¬èϱè½ÏÖμÎa×Ô¶ˉÖØ×°ÔØÖμμÄò»°ë,¼′Õ¼¿Õ±èÎa25%
    TIM3_CH4Handler.OCPolarity=TIM_OCPOLARITY_LOW; //êä3ö±è½Ï¼«DÔÎaμí
    HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH4Handler,TIM_CHANNEL_4);//ÅäÖÃTIM3í¨μà4
       
    HAL_TIM_PWM_Start(&TIM1_Handler,TIM_CHANNEL_1);//¿aÆ&#244WMí¨μà1
                HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_4);//¿aÆ&#244WMí¨μà4
                   
}

//¶¨ê±Æ÷μ×2ãÇy¶ˉ£¬ê±Öóê1Äü£¬òy½ÅÅäÖÃ
//′Ëoˉêy»á±»HAL_TIM_PWM_Init()μ÷óÃ
//htim:¶¨ê±Æ÷¾ä±ú
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
        GPIO_InitTypeDef GPIO_Initure;
       
    if(htim->Instance==TIM1)
        {
                __HAL_RCC_TIM1_CLK_ENABLE();                        //ê1Äü¶¨ê±Æ÷1
                __HAL_RCC_GPIOA_CLK_ENABLE();                        //¿aÆôGPIOAê±Öó
               
                GPIO_Initure.Pin=GPIO_PIN_8;                   //PA8
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;          //¸′óÃíÆíìêä3ö
                GPIO_Initure.Pull=GPIO_PULLUP;          //éÏà-
                GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //¸ßËù
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);        
        }
                if(htim->Instance==TIM3)
        {
                __HAL_RCC_TIM3_CLK_ENABLE();                        //ê1Äü¶¨ê±Æ÷3
                __HAL_RCC_GPIOB_CLK_ENABLE();                        //¿aÆôGPIOBê±Öó
               
                GPIO_Initure.Pin=GPIO_PIN_8;                   //PB8
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;          //¸′óÃíÆíìêä3ö
                GPIO_Initure.Pull=GPIO_PULLUP;          //éÏà-
                GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //¸ßËù
                HAL_GPIO_Init(GPIOB,&GPIO_Initure);        
        }
       
}

//éèÖÃTIM1í¨μà1μÄÕ¼¿Õ±è
//compare:±è½ÏÖμ
void TIM_SetTIM1Compare1(u32 compare)
{
        TIM1->CCR1=compare;
        TIM3->CCR4=compare/2;
}

//¶¨ê±Æ÷1ÖD¶Ï·tÎñoˉêy
void TIM1_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM1_Handler);
}

//¶¨ê±Æ÷3ÖD¶Ï·tÎñoˉêy
void TIM3_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM3_Handler);
}


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

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-7-10
在线时间
4 小时
 楼主| 发表于 2019-7-31 21:10:39 | 显示全部楼层
为何我粘贴的程序备注变成乱码了?
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2019-10-17
在线时间
24 小时
发表于 2020-3-26 12:02:56 | 显示全部楼层
这个应该时没有死区时间的吧,不过HAL库的资源好少啊,谢谢楼主
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 18:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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