您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制STM32 :用PWM的方法实现荧火虫灯 正文
STM32 :用PWM的方法实现荧火虫灯

STM32 :用PWM的方法实现荧火虫灯

点击数:7258 次   录入时间:03-04 12:01:16   整理:http://www.55dianzi.com   电脑-单片机-自动控制

      uint8_t Count1,Count2; //1.像限计数器,其值在0~3之间变化 2.其值在0~31之间变化

      void TIM3_IRQHandler(void)

      {

      if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET)

      {

      TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);

      if(Count2%2==0) //准备更新,新的值会在下一次更新

      { switch(Count1)

      { case 0: //象限1

      {

      TIM3-》CCR1= sinTab[Count2/2];

      break;

      }

      case 1: //象限2

      { TIM3-》CCR1=sinTab[15-Count2/2];

      break;

      }

      case 2: //象限3

      { TIM3-》CCR1=560-sinTab[Count2/2];

      break;

      }

      case 3: //象限4

      { TIM3-》CCR1=560-sinTab[15-Count2/2];

      break;

      }

      default:break;

      }

      }

      }

      if(++Count2==32)

      { Count2=0;

      if(++Count1==4)

      Count1=0;

      }

      }



www.55dianzi.com

  也就是在这里,搞清楚了,所谓的“我有些怀疑上面提到的那个CCR1没有立即变化仅仅只是调试器的问题”不对,这是CCR1更新方法的问题,

  

  注意上图中红色框中的描述。

  这里就是不用立即更新的方法。因为每个点的PWM波形会出现2次,因此,用

  if(Count2%2==0) 来判断是第一次产生PWM波形,更新CCR1,但是这个CCR1不会立即更新,而会在下一次产生PWM事件时更新。



上一页  [1] [2] 


本文关键字:暂无联系方式电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制