找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2323|回复: 3
收起左侧

基于STM32的PWM呼吸灯源码

[复制链接]
ID:430781 发表于 2018-11-21 20:20 | 显示全部楼层 |阅读模式
主要是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)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:347148 发表于 2018-12-10 18:57 | 显示全部楼层
有原理图吗
回复

使用道具 举报

ID:223999 发表于 2018-12-28 14:41 | 显示全部楼层
看一下
回复

使用道具 举报

ID:487397 发表于 2019-3-11 11:38 | 显示全部楼层
楼主:提供原理图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表