历史上的今天
返回首页

历史上的今天

今天是:2025年02月16日(星期日)

正在发生

2020年02月16日 | 基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)

2020-02-16 来源:elecfans

硬件电路图:

基于stm32的pwm呼吸灯

我的收获:

基于stm32的pwm呼吸灯

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

使能TIM3通道1的函数为

TIM_OC1Init();1

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

TIM_OC2Init()1

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

基于stm32的pwm呼吸灯

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

TIM3-》CCR11

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

TIM3-》CCR21

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


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

工程文件为

Progect–》RVMDK(uv4)–》iSO_STM32

基于stm32的pwm呼吸灯

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--);

}

}

推荐阅读

史海拾趣

ApexTool Group公司的发展小趣事

随着全球电子市场的不断扩大,Apex Tool Group积极实施全球化战略,拓展市场版图。公司在全球范围内建立了多个生产基地和分销网络,以便更好地服务全球客户。同时,Apex Tool Group还积极与全球知名的电子企业开展合作,共同推动电动工具技术的创新和发展。这些举措使得Apex Tool Group在全球电子行业中的地位日益稳固。

Chauvin Arnoux公司的发展小趣事

1934年,Chauvin Arnoux再次引领技术潮流,发明了电流互感器钳形表,这是世界上第一个非接触式电流表。这一发明不仅改变了电流测量的传统方式,而且极大地提高了测量的便捷性和安全性。非接触式电流表的出现,为电气工程师和技术人员提供了更为高效和安全的测量工具,推动了电气行业的发展。

FOX [Fox Electronics]公司的发展小趣事

面对物联网、5G通信和汽车电子等新兴技术的快速发展,Fox Electronics敏锐地洞察到未来市场的变革趋势。公司加大了对高频、低抖动和高精度时钟解决方案的研发力度,以满足新兴应用对时钟源的高要求。同时,Fox Electronics还积极布局汽车电子市场,开发适应汽车自动驾驶和车联网需求的专用时钟产品。通过不断创新和布局未来市场,Fox Electronics为自身的持续发展奠定了坚实基础。

请注意,以上故事均为虚构内容,旨在展示电子行业发展的某些方面和可能的趋势。实际上,Fox Electronics的具体发展历程和成就可能有所不同。

GCi Technologies公司的发展小趣事
在工业自动化领域,为各种设备提供稳定可靠的充电解决方案。
FCI / Amphenol公司的发展小趣事

FCI公司起源于1988年,当时由Framatome组建,其初衷是作为核能领域外的一个多样化经营项目。然而,随着市场的变化和公司的战略调整,FCI逐渐将重心转向连接器制造。经过20多次的精心收购和策略性扩张,FCI在短短20年内便成长为全球最大的连接器制造公司之一。这一转变不仅展现了FCI对市场敏锐的洞察力,也体现了其卓越的管理能力和执行力。

申风(everanalog)公司的发展小趣事

作为一家有社会责任感的企业,申风(everanalog)公司始终关注社会发展和环境保护问题。公司积极参与公益事业和环保活动,致力于为社会做出积极贡献。同时,公司也注重可持续发展战略的制定和实施,在生产经营过程中注重节能减排和资源循环利用等方面的工作。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

请注意,以上故事框架仅为示例,并未包含具体的细节和数据。如需了解更多关于申风(everanalog)公司的具体信息和发展历程,请查阅相关新闻报道或官方资料。

问答坊 | AI 解惑

组装好仪器后液晶屏花屏

我的仪器组装好后,就是把板子和液晶装到外壳后,液晶在过一段时间后就会花屏,不装到外壳里就没事,弄了好长时间了也不知道怎么回事,请大家帮忙。…

查看全部问答>

WinCE5.0挂接IDE硬盘的疑惑?

WinCE5.0挂接IDE硬盘的疑惑? 有个项目,想使用IDE44pin接口挂接最少64GB的外部存储器,现有如下问题和大家讨论: 1.工作电压: 现在手头上的IDE电路是直接从S3C2440上IO口引出,鉴于3.3V的IO电压,似乎不能正常驱 ...…

查看全部问答>

本人大四学生

已经学习了c51单片机,想问下各位老师,如果以后要从事单片机开发的话,需要再学习哪些大学未传授的知识,谢谢…

查看全部问答>

求binArrayStart和binArrayEnd的定义的线索

问题描述:         大家好。我最近在修改Boot程序。在bootinit.c文件中有如下定义: IMPORT UCHAR        binArrayStart [];                    & ...…

查看全部问答>

问个mfc应用的问题??

在dialog中有个tab control,在每个tab的dialog中有个group box, group box中有个按钮。 现在的现实结果是tab control和group box都显示正常,按钮没有显示,什么原因? app方面菜鸟一个,期待大家指点…

查看全部问答>

单片机的问题

提高单片机 WR,RD 驱动能力一般用什么芯片啊…

查看全部问答>

【芯币兑换】AVR单片机学习板及编程器最详细元器件清单

一、USB型51/AVR单片机编程器元器件清单   二、AVR ATmega16单片机学习板元器件清单           [ 本帖最后由 tiankai001 于 2010-8-8 15:35 编辑 ]…

查看全部问答>

一个2407产生对称PWM的问题````

因为刚学DSP,做的是用2407产生6路3对对称PWM,一开始摸索的时候程序老是编译有问题,今天才把程序搞好``却发现我的板子出了问题,因为编的第一个程序所以没有把挖想放上来大家帮我看看这样写是不是能产生6路3对对称PWM``` 主程序如下 #include \\" ...…

查看全部问答>

求一可用的串口通讯程序

折腾了好几天,实在弄不出来了,哪位有好使的串口程序赏一个,谢谢了。…

查看全部问答>

基于LED点阵显示屏9路抢答器的设计制作程序

基于LED点阵显示屏9路抢答器的设计制作程序…

查看全部问答>