标题: 基于STM32的PWM呼吸灯源码 [打印本页]

作者: tapRHIC    时间: 2018-11-21 20:20
标题: 基于STM32的PWM呼吸灯源码
主要是STM32103系列的应用,适合新手。非喜勿喷。

单片机源程序如下:
  1. #include"PWM.h"

  2. void TIM3_CH1_PWM_Init(u16 pre,u16 psc)
  3. {  
  4.        
  5.           GPIO_InitTypeDef GPIO_InitStructure;
  6.                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  7.                 TIM_OCInitTypeDef TIM_OCInitStructure;
  8.        
  9.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  10.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  11.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

  12.           GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//端口
  13.           GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//推挽输出
  14.           GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//输出速度
  15.           GPIO_Init(GPIOC,&GPIO_InitStructure);
  16.        
  17.                 GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);//映射到PC6
  18.        
  19.                 TIM_TimeBaseInitStructure.TIM_Period=pre;//自动重载值
  20.                 TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
  21.                 TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;//预分频系数(1分频)
  22.                 TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//计数模式
  23.                 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
  24.        
  25.                 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  26.                 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
  27.                 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  28.                 TIM_OC1Init(TIM3,&TIM_OCInitStructure);
  29.                
  30.                 TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
  31.                 TIM_ARRPreloadConfig(TIM3,ENABLE);
  32.                
  33.                 TIM_Cmd(TIM3,ENABLE);
  34.                
  35. }
复制代码

  1. #include"stm32f10x.h"
  2. #include"led.h"
  3. #include"system.h"
  4. #include"SysTick.h"
  5. #include"PWM.h"


  6. int main()
  7. {  
  8.          u16 i=0;
  9.          u8 fx=0;
  10.          SysTick_Init(72);
  11.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  12.          LED_Init();
  13.          TIM3_CH1_PWM_Init(500,72-1);//ARR频率2K
  14.    while(1)
  15.         {
  16.                 if(fx==0)
  17.                 {
  18.                   i++;
  19.                         if(i==300)
  20.                         {
  21.                          fx=1;
  22.                         }
  23.                 }
  24.                 else
  25.                 {
  26.                   i--;
  27.                         if(i==0)
  28.                         {
  29.                           fx=0;
  30.                         }
  31.                 }
  32.                 TIM_SetCompare1(TIM3,i);
  33.                 delay_ms(10);
  34.   }
  35. }
复制代码

所有资料51hei提供下载:
实验13PWM呼吸灯.rar (283.36 KB, 下载次数: 55)



作者: 臧梦涵    时间: 2018-12-10 18:57
有原理图吗
作者: pm1981    时间: 2018-12-28 14:41
看一下
作者: DBGB123    时间: 2019-3-11 11:38
楼主:提供原理图




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1