描述

基于stm32的pwm呼吸灯

使用定时器来控制I/O口输出PWM波形,从而驱动LED灯出现类似呼吸频率一般的亮灭。

硬件电路图:

我的收获:

这是STM32数据手册上对TIM3通用定时器复用功能重映象的描述,假设让PA6作为PWM输出,从图中可以看出PA6对应TIM3的通道1,

使能TIM3通道1的函数为

TIM_OC1Init();1

同样的,如果想要使能PA7,它对应的是TIM3的通道2,那么使能通道2的函数便是:

TIM_OC2Init()1

以此类推,需要注意,使能不同相同定时器不同通道的函数是有一点小差别的,防止在程序中调用TIM_OC1Init()函数来使能TIM3通道2这种情况的发生。

注意看这里,假设使用的是TIM3的通道1,那么这里就要写成

TIM3-》CCR11

类似的如果用TIM3定时器的通道2,这里就要相应的改为

TIM3-》CCR21

这同样是为了防止本来计划使用的是TIM3的通道1,反而在这里自摆乌龙写为了TIM-》CCR2的情况,这样的错误一般很隐蔽,不容易查找。

相应的程序已经上传,但是不知道为什么在这里无法显示程序的下载地址,需要下载可以去我的资源里下载。

工程文件为

Progect–》RVMDK(uv4)–》iSO_STM32

STM32PWM输出实现LED灯渐亮渐灭程序:

/**说明:

*PA0:KEY1;PA1:KEY2;

*PA2:LED1;PA3:LED2;

*PA9:USART1_TX;PA10:USART1_RX

*/

#include “stm32f10x.h”

#include “stm32f10x_rcc.h”

#include “stm32f10x_gpio.h”

#include “stm32f10x_tim.h”

#include “stm32f10x_pwr.h”

#include “stm32f10x_exti.h”

#include “system_stm32f10x.h”

#include “misc.h”

void RCC_Configuration(void);

void GPIO_Configuration(void);

void TIM2_Configuration(void);

void delay_ms(u16 time);

int main()

{

u8 led_fx=1;

u16 led_dt=0;

RCC_Configuration();

GPIO_Configuration();

TIM2_Configuration();

while(1)

{

delay_ms(10);

if(led_fx==1)

{

led_dt++;

}else{

led_dt--;

}

if(led_dt》100) led_fx=0;//可以和初始值一样

if(led_dt==0) led_fx=1;

TIM_SetCompare3(TIM2,led_dt);//通道3没有重影像是PA2对应LED1

TIM_SetCompare4(TIM2,led_dt);//通道4没有重影像是PA3对应LED2

}

}

void RCC_Configuration(void)

{

SystemInit();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

//GPIO_AFIODeInit();和下面相同效果,可以查看源码证明

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

}

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

//GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,ENABLE);//端口映射函数

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;//GPIO_Pin_3对应channel3,主函数改为:TIM_SetCompare3

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

void TIM2_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_DeInit(TIM2);

TIM_InternalClockConfig(TIM2);

//定时器初始化

TIM_TimeBaseStructure.TIM_Period = 100-1;//初始值是100,2MHz=2000KHz,2MHz/100=0.02MHz,所有周期T=1/0.02MHz=50us,示波器显示周期应该为50us

TIM_TimeBaseStructure.TIM_Prescaler = 36-1;//36倍分频,72MHz/36=2MHz

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

//PWM初始化

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 50;//占空比值是50,所以占空比是:50/100=50%

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

TIM_OC3Init(TIM2,&TIM_OCInitStructure);

TIM_OCInitStructure.TIM_Pulse = 20;

TIM_OC4Init(TIM2,&TIM_OCInitStructure);

//TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Enable);

//TIM_ARRPreloadConfig(TIM2, ENABLE);

TIM_Cmd(TIM2,ENABLE);

TIM_CtrlPWMOutputs(TIM2,ENABLE);

}

void delay_ms(u16 time)

{

u16 i=0;

while(time--)

{

i=12000;

while(i--);

}

}

打开APP精彩内容

点击阅读全文

stm32呼吸灯c语言程序,基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)相关推荐

  1. msp430流水灯c语言程序,基于MSP-EXP430F5529开发板流水灯程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 RT,全部使用到了板载的8个可编程LED组成的流水灯程序,以及液晶的背光,达到了使能亮的东西全都又闪又亮了. //******************** ...

  2. 彩灯控制单片c语言程序,基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序...

    满意答案 yivdi2o28 2014.05.15 采纳率:46%    等级:11 已帮助:4795人 #include<reg52.h> #define uint unsigned i ...

  3. stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级

    stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级,无需上位机操作. 清单: u盘升级的bootloader源码. YID: ...

  4. AT89C51单片机流水灯c语言程序及详解(扫盲教程)

    AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...

  5. 基于STM32F103ZET6库函数PWM输出实验

    基于STM32F103ZET6库函数PWM输出实验 PWM 简介 硬件设计 软件设计 使 用 TIM3 的通道 2,把通道 2 重映射到 PB5,产生 PWM 来控制 DS0 的亮度. PWM 简介 ...

  6. 太阳能路灯c语言程序,基于单片机的智能太阳能路灯控制系统的设计方案

    摘要:随着世界能源危机日益严重,利用太阳能成为解决能源问题的一大途径,在此背景下开发智能太阳能路灯意义重大.本文介绍了智能太阳能路灯系统的组成及工作原理,采用LPC935 单片机作为主控制器,结合密封 ...

  7. 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc

    基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...

  8. 实验一 简单io应用—流水灯控制示例程序_【正点原子FPGA连载】第十章呼吸灯实验--领航者ZYNQ之linux开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  9. 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计 - 全文

    本文为大家带来三个关于LED模拟交通灯单片机C语言程序设计. 关于LED模拟交通灯单片机C语言程序设计一 功能说明 东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南 ...

  10. 收音机c语言程序,基于单机收音机的C语言程序.doc

    基于单机收音机的C语言程序 单片机源程序 #include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义变量范围0~255 #define u ...

最新文章

  1. 困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...
  2. CSDN线上直播操作测试方案
  3. Hibernate配置属性详解
  4. 编程:要求随机产生30到小学2年级的四则运算题
  5. git 常用命令备查
  6. mysql count转字符串_MySQL字符串函数
  7. Spring: Spring 从xml获取bean
  8. zabbix snmp异常超时、不稳定、时通时断:Timeout while connecting...
  9. mui获取css参数,Mui-获取时间-调用手机api
  10. 036 关于网站的UV分析
  11. iOS CocoaPods:Updating local specs repositories一直停在那里了
  12. C# 编译后执行bat等脚本文件 运行脚本文件 执行Copy 执行XCopy
  13. continue 结束本次循环,继续下一次循环
  14. 认知升级,洞察人性,构建壁垒:AI创业如何跨越鸿沟?
  15. 远程桌面计算机名如何删除,如何删除远程连接记录?如何用电脑识别码实现远程控制?...
  16. gin 渲染不同目录下的模板(支持多层目录)
  17. DNS的更新和ddns(动态域名解析)
  18. 计算机作文 六年级,我和电脑600字_六年级作文_小学作文 - 265学校教育网
  19. 【深度好文】Python图像处理之物体标识与面积测量
  20. 招商银行信用卡中心一面

热门文章

  1. [人体参考]_人体各部分布线图人体解剖参考资料下载!
  2. Qt UDP Socket丢包问题(实现百兆级速率无丢包)
  3. 基于Office Visio 2010 图表绘制
  4. ai俄罗斯方块java,C#实现俄罗斯方块AI
  5. 手机数控模拟器安卓版_手机cnc加工模拟器中文版下载-cnc加工模拟器手机版 1.1.4 安卓版-玩友游戏网...
  6. javascript 同时下载多个文件
  7. 【SecureCRT】SecureCRT设置上传下载目录
  8. 【原创】技术员 Win10(32位)系统1709企业版 201711
  9. 第03讲 struts2中ActionSupport引入
  10. 按头安利 好看又实用的窗户贴图素材看这里