pwm.c

来自「stm32初级例程」· C语言 代码 · 共 55 行

C
55
字号
/*----------------------------------------------------------------------------
QQ: 958664258
21IC用户名:banhushui
交流平台:http://blog.21ic.com/user1/5817/index.html
淘宝店铺:http://shop58559908.taobao.com
旺旺:半壶水电子
编译器版本:MDK4.12
 *---------------------------------------------------------------------------*/

#include <stm32f10x_lib.h>                        // STM32F10x Library Definitions
#include "STM32_Init.h"                           // STM32 Initialization


unsigned short Ccr = 0;                // Capture , Compare value
int Dir = 1;                           // in- decrease CCR

/*------------------------------------------------------------------------------
  Timer4 Update Interrupt Handler
 *------------------------------------------------------------------------------*/
void TIM4_IRQHandler(void)
{
   if (TIM4->SR & (1 << 0))
   {
      // UIF set?
      // lower limit reached ? move up
      //判断占空比到最小
      if (Ccr == 0)
         Dir = 1;                     
      // upper limit reached ? move down
      //判断占空比到最大
      if (Ccr == 100)
         Dir = -1;
      Ccr = Ccr + Dir;   
      TIM4->CCR3 = Ccr;                             // change ccr
      TIM4->CCR4 = 100 - Ccr;                       // change ccr

      TIM4->SR &= ~(1 << 0);                          // clear UIF flag
   }
} // end TIM4_IRQHandler

/*----------------------------------------------------------------------------
  MAIN function
 *----------------------------------------------------------------------------*/
int main(void)
{
   stm32_Init();                                  // STM32 setup

   while (1)
   {
      // Loop forever
       ;} // end while
} // end main


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?