stm32定时器学习笔记(HAL)

#本人专用#

1、定时器结构体

TIM_HandleTypeDef g_timx_npwm_chy_handle;     /* 定时器x句柄 */

__HAL_RCC_TIM1_CLK_ENABLE();                        /*开启时钟*/

 g_timx_npwm_chy_handle.Instance = TIM1;                  /* 定时器x */
    g_timx_npwm_chy_handle.Init.Prescaler = psc;                       /* 定时器分频 */
    g_timx_npwm_chy_handle.Init.CounterMode = TIM_COUNTERMODE_UP;  /* 递增计数模式 */
    g_timx_npwm_chy_handle.Init.Period = arr;                          /* 自动重装载值 */
    g_timx_npwm_chy_handle.Init.AutoReloadPreload =     TIM_AUTORELOAD_PRELOAD_ENABLE; /*使能TIMx_ARR进行缓冲 */


    g_timx_npwm_chy_handle.Init.RepetitionCounter = 0;                 /* 重复计数器初始值 */
    HAL_TIM_PWM_Init(&g_timx_npwm_chy_handle);                         /* 初始化PWM */

2、输出PWM的结构体

TIM_OC_InitTypeDef timx_oc_npwm_chy;   /* 定时器输出 */

 timx_oc_npwm_chy.OCMode = TIM_OCMODE_PWM1;                         /* 模式选择PWM 1*/
 timx_oc_npwm_chy.Pulse = arr / 2;                                  /* 设置比较值,此值用来确定占空比 */
  /* 这里默认设置比较值为自动重装载值的一半,即占空比为50% */


timx_oc_npwm_chy.OCPolarity = TIM_OCPOLARITY_HIGH;                 /* 输出比较极性为高 */
HAL_TIM_PWM_ConfigChannel(&g_timx_npwm_chy_handle, &timx_oc_npwm_chy, ATIM_TIMX_NPWM_CHY); /* 配置TIMx通道y *

/*还要记得开启pwm函数输出*/

HAL_TIM_PWM_Start(&g_timx_cplm_pwm_handle, TIM_CHANNEL_1);         /* 使能OCy输出 */
 HAL_TIMEx_PWMN_Start(&g_timx_cplm_pwm_handle, TIM_CHANNEL_1);      /* 使能OCyN输出 */

3、死区结构体

TIM_BreakDeadTimeConfigTypeDef g_sbreak_dead_time_config = {0};        

/* 死区时间设置 *//* 设置死区参数,开启死区中断 */


    g_sbreak_dead_time_config.OffStateRunMode = TIM_OSSR_DISABLE;

/* 运行模式的关闭输出状态

*/
    g_sbreak_dead_time_config.OffStateIDLEMode = TIM_OSSI_DISABLE;          

/* 空闲模式的关闭输出状态 */


    g_sbreak_dead_time_config.LockLevel = TIM_LOCKLEVEL_OFF;              

 /* 不用寄存器锁功能 */


    g_sbreak_dead_time_config.BreakState = TIM_BREAK_ENABLE;                

/* 使能刹车输入 */


    g_sbreak_dead_time_config.BreakPolarity = TIM_BREAKPOLARITY_HIGH;      

/* 刹车输入有效信号极性为高 */
 

  g_sbreak_dead_time_config.AutomaticOutput = TIM_AUTOMATICOUTPUT_ENABLE;

/* 使能AOE位,允许刹车结束后自动恢复输出 */


HAL_TIMEx_ConfigBreakDeadTime(&g_timx_cplm_pwm_handle,&g_sbreak_dead_time_config);

HAL_TIM_PWM_Start(&g_timx_cplm_pwm_handle, TIM_CHANNEL_1);        

/* 使能OCy输出 */


 HAL_TIMEx_PWMN_Start(&g_timx_cplm_pwm_handle, TIM_CHANNEL_1);    

 /* 使能OCyN输出 */

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值