stm32呼吸灯c语言程序,基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)
描述
基于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呼吸灯代码)相关推荐
- msp430流水灯c语言程序,基于MSP-EXP430F5529开发板流水灯程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 RT,全部使用到了板载的8个可编程LED组成的流水灯程序,以及液晶的背光,达到了使能亮的东西全都又闪又亮了. //******************** ...
- 彩灯控制单片c语言程序,基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序...
满意答案 yivdi2o28 2014.05.15 采纳率:46% 等级:11 已帮助:4795人 #include<reg52.h> #define uint unsigned i ...
- stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级
stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级,无需上位机操作. 清单: u盘升级的bootloader源码. YID: ...
- AT89C51单片机流水灯c语言程序及详解(扫盲教程)
AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...
- 基于STM32F103ZET6库函数PWM输出实验
基于STM32F103ZET6库函数PWM输出实验 PWM 简介 硬件设计 软件设计 使 用 TIM3 的通道 2,把通道 2 重映射到 PB5,产生 PWM 来控制 DS0 的亮度. PWM 简介 ...
- 太阳能路灯c语言程序,基于单片机的智能太阳能路灯控制系统的设计方案
摘要:随着世界能源危机日益严重,利用太阳能成为解决能源问题的一大途径,在此背景下开发智能太阳能路灯意义重大.本文介绍了智能太阳能路灯系统的组成及工作原理,采用LPC935 单片机作为主控制器,结合密封 ...
- 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc
基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...
- 实验一 简单io应用—流水灯控制示例程序_【正点原子FPGA连载】第十章呼吸灯实验--领航者ZYNQ之linux开发指南...
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计 - 全文
本文为大家带来三个关于LED模拟交通灯单片机C语言程序设计. 关于LED模拟交通灯单片机C语言程序设计一 功能说明 东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南 ...
- 收音机c语言程序,基于单机收音机的C语言程序.doc
基于单机收音机的C语言程序 单片机源程序 #include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义变量范围0~255 #define u ...
最新文章
- 困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...
- CSDN线上直播操作测试方案
- Hibernate配置属性详解
- 编程:要求随机产生30到小学2年级的四则运算题
- git 常用命令备查
- mysql count转字符串_MySQL字符串函数
- Spring: Spring 从xml获取bean
- zabbix snmp异常超时、不稳定、时通时断:Timeout while connecting...
- mui获取css参数,Mui-获取时间-调用手机api
- 036 关于网站的UV分析
- iOS CocoaPods:Updating local specs repositories一直停在那里了
- C# 编译后执行bat等脚本文件 运行脚本文件 执行Copy 执行XCopy
- continue 结束本次循环,继续下一次循环
- 认知升级,洞察人性,构建壁垒:AI创业如何跨越鸿沟?
- 远程桌面计算机名如何删除,如何删除远程连接记录?如何用电脑识别码实现远程控制?...
- gin 渲染不同目录下的模板(支持多层目录)
- DNS的更新和ddns(动态域名解析)
- 计算机作文 六年级,我和电脑600字_六年级作文_小学作文 - 265学校教育网
- 【深度好文】Python图像处理之物体标识与面积测量
- 招商银行信用卡中心一面
热门文章
- [人体参考]_人体各部分布线图人体解剖参考资料下载!
- Qt UDP Socket丢包问题(实现百兆级速率无丢包)
- 基于Office Visio 2010 图表绘制
- ai俄罗斯方块java,C#实现俄罗斯方块AI
- 手机数控模拟器安卓版_手机cnc加工模拟器中文版下载-cnc加工模拟器手机版 1.1.4 安卓版-玩友游戏网...
- javascript 同时下载多个文件
- 【SecureCRT】SecureCRT设置上传下载目录
- 【原创】技术员 Win10(32位)系统1709企业版 201711
- 第03讲 struts2中ActionSupport引入
- 按头安利 好看又实用的窗户贴图素材看这里