打印

使用中断方式实现PWM的占空比控制

[复制链接]
267|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一亚麻怡|  楼主 | 2018-7-27 20:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做F429例程移植到F407的时候发现TIM_SetTIM3Compare4这个函数是自己写的不是HAL库函数,并且此函数还是直接使用寄存器,所以个人想是否存在着某种方式,可以用库函数来实现相同功能,然后想到前面USART的中断时一种形式,那这种形式是否是通用当然呢?然后查询TIM文件发现定时器开启中断的方式和USART一样,所以想到是否可用中断方式来实现PWM的占空比控制。然后发现其实可以,在使用CUBEMX生成代码后在MX_TIM14_Init加上开启中断的函数HAL_TIM_PWM_Start_IT(&htim14,TIM_CHANNEL_1);后就开启中断,在IT文件中完成TIM8_TRG_COM_TIM14_IRQHandler就可以实现用中断方式来控制PWM了。
void TIM8_TRG_COM_TIM14_IRQHandler(void)
{
  /* USER CODE BEGIN TIM8_TRG_COM_TIM14_IRQn 0 */
  
  
  /* USER CODE END TIM8_TRG_COM_TIM14_IRQn 0 */
  HAL_TIM_IRQHandler(&htim14);
  /* USER CODE BEGIN TIM8_TRG_COM_TIM14_IRQn 1 */
  if(HAL_TIM_PWM_GetState(&htim14) == HAL_TIM_STATE_READY)
  {
    if(dir)led0pwmval ++;
    else led0pwmval --;
    if(led0pwmval>500) dir = 0;
    if(led0pwmval == 0) dir = 1;
    __HAL_TIM_SetCompare(&htim14,TIM_CHANNEL_1,led0pwmval);//此处是个宏定义,在TIM文件中,作用就是设置占空比
  }

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

404

主题

404

帖子

0

粉丝