历史上的今天
返回首页

历史上的今天

今天是:2025年08月18日(星期一)

正在发生

2020年08月18日 | 【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)

2020-08-18 来源:eefocus

前言:

本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用

 

所用工具:

1、芯片: STM32F407ZET6/ STM32F103ZET6

2、STM32CubeMx软件

3、IDE: MDK-Keil软件

4、STM32F1xx/STM32F4xxHAL库 

知识概括:

通过本篇博客您将学到:

PWM工作原理

STM32CubeMX创建PWM例程

HAL库定时器PWM函数库

PWM创建呼吸灯

 

《【STM32】系统时钟RCC详解(超详细,超全面)》

4项目文件设置

  • 1 设置项目名称

  • 2 设置存储路径

  • 3 选择所用IDE

5创建工程文件

然后点击GENERATE CODE  创建工程

配置下载工具

新建的工程所有配置都是默认的  我们需要自行选择下载模式,勾选上下载后复位运行

 

例程详解:

这里我们创建一个呼吸灯的例程

定义变量:


  /* USER CODE BEGIN 1 */

    uint16_t pwmVal=0;   //PWM占空比  

    uint8_t dir=1;    

  /* USER CODE END 1 */

然后使能TIM3的PWM Channel1 输出。


  /* USER CODE BEGIN 2 */

  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);

  /* USER CODE END 2 */

在while循环中添加代码:


  while (1)

  {

  /* USER CODE END WHILE */

 

  /* USER CODE BEGIN 3 */

 

  while (pwmVal< 500)

  {

  pwmVal++;

  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比

//   TIM3->CCR1 = pwmVal;    与上方相同

  HAL_Delay(1);

  }

  while (pwmVal)

  {

  pwmVal--;

  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比

//   TIM3->CCR1 = pwmVal;     与上方相同

  HAL_Delay(1);

  }

  HAL_Delay(200);

 

  /* USER CODE END 3 */

 }

或者直接修改CCRx寄存器的值


htim3.Instance->CCR1 = 300;


通过 htim3.Instance->即可访问与定时器相关寄存器

推荐阅读

史海拾趣

EQCOLOGIC公司的发展小趣事

EQCOLOGIC的创始人在一次偶然的机会中,发现了一种新型电子材料的独特性能。这种材料不仅具有优异的导电性,还具有出色的热稳定性和耐腐蚀性。他敏锐地意识到这种材料在电子行业中的巨大潜力,于是决定成立EQCOLOGIC公司,专注于这种新型电子材料的研发和应用。经过几年的努力,EQCOLOGIC成功将这种材料商业化,并凭借其独特的性能,在电子行业中崭露头角。

Display Elektronik GmbH公司的发展小趣事

为了进一步扩大市场份额,Display Elektronik GmbH实施了国际化战略。公司积极开拓海外市场,与多个国家和地区的客户建立了合作关系。同时,Display Elektronik GmbH还在海外设立了研发中心和生产基地,以便更好地满足当地市场的需求。这种国际化战略的实施,让Display Elektronik GmbH的产品逐渐走向世界。

DBS Microwave Inc公司的发展小趣事

DBS Microwave Inc公司起源于XXXX年,当时由几位志同道合的电子工程师创立。他们共同意识到,随着无线通信技术的飞速发展,微波器件的市场需求将会急剧增长。于是,他们凭借丰富的专业知识和对市场趋势的敏锐洞察,决定专注于研发和生产高质量的微波射频器件。起初,公司面临着资金紧张、市场竞争激烈等诸多挑战,但创始人团队凭借坚韧不拔的精神和对技术的执着追求,逐步在市场上崭露头角。

芯力微(CHI Power)公司的发展小趣事

在电子行业的快速发展中,芯力微公司始终保持着敏锐的市场洞察力。2010年,随着智能手机市场的崛起,公司迅速识别到电源管理芯片的巨大潜力。通过持续的技术研发,芯力微成功推出了具有低压低功耗特点的电源管理芯片,赢得了市场的广泛认可。这一技术突破不仅帮助公司进入了新的市场领域,也为后续的发展奠定了坚实的基础。

Anadigm公司的发展小趣事

在电子行业的快速发展中,芯力微公司始终保持着敏锐的市场洞察力。2010年,随着智能手机市场的崛起,公司迅速识别到电源管理芯片的巨大潜力。通过持续的技术研发,芯力微成功推出了具有低压低功耗特点的电源管理芯片,赢得了市场的广泛认可。这一技术突破不仅帮助公司进入了新的市场领域,也为后续的发展奠定了坚实的基础。

Frequency Electronics Inc公司的发展小趣事

高频电子的业务范围广泛且多元化,主要包括FEI-NY、Gillam-FEI和FEI-Zyfer三个部门。FEI-NY部门主要负责纽约总部设施和子公司FEI-Asia与FEI-Elcom的运营;Gillam-FEI部门则负责比利时与法国的业务,并专注于电缆网络同步产品的设计、研发和生产;FEI-Zyfer部门则主要经营公司加州业务,并设计生产附带GPS技术的产品。这种多元化业务布局不仅降低了公司的经营风险,还实现了各业务之间的战略协同和资源共享。

问答坊 | AI 解惑

任务制作有奖励

求高手制作微波透视仪。需微波放射仪,微波接收仪,接收后处理成声音,声音用无线耳机接收,越简洁越好用纸牌做实验。成品费2万…

查看全部问答>

nonbios 和bios的区别

CMD文件中nonBIOS应用和BIOS应用,TI中C2000 适合用nonBIOS.BIOS适合C5000和C6000 ,实时操作系统。…

查看全部问答>

请问protel自动布局的问题

    我通过tools-》autoplacement 然后选统计布局,其他默认,结果等他布局完后大部分元件还在pcb板子外面,keepoutlayer我也有(粉紫色线),究竟啥原因哩,而且有的元件焊盘位置还变了!! autoplace需要选中automatic pcb update吗 ...…

查看全部问答>

求wavecom开发包,要求破解版的.

我毕业设计需要做一个SMS短信的收发程序,需要SMS的开发包,需要提供收发等功能, 开发包为DLL,有详细的说明! 谢谢大家了.…

查看全部问答>

求助!串口发送文件问题?

我在写bootloader,在串口这遇到点麻烦,各位大牛给点意见 我将bootloader分为两个阶段,现在第一阶段差不多完成了,就差实现从串口烧录第二阶段到flash的功能 思路是这样的,在kermit下send boot_sencond.bin,我想问下,在发送完后,boot_sencon ...…

查看全部问答>

AvtS6LX9MicroBoard在使用lwip时出错?

在Xilinx Spartan-6 LX9在使用lwip时,我对AvtS6LX9MicroBoard_SW201_LwIP_Apps_13_1_01\\memfs目录下的index.html文件进行修改,在页面最低端添加一个链接网页,如图这个Test file网页内容和index.html内容一样,经过打包下载到AvtS6LX9MicroBoard ...…

查看全部问答>

C8051F120 FLASH编程问题

这是我根据C8051F120 的PDF资料写的FLASH读和写的程序,但是就是读不对,还把原来程序的内容给覆盖掉了: ////////////FLASH读写操作调试程序///////////////// #include \"flash.h\"#include \"c8051f120.h\"  //#define LEN 5sfr1 ...…

查看全部问答>

2013国赛旋转倒立摆伺服电机选型求推荐

本帖最后由 paulhyde 于 2014-9-15 03:36 编辑 大家对于这个题都打算用什么电机呢? 听到好多直流伺服电机 但是没有了解过 求大婶们进来讨论下选型推荐~~    …

查看全部问答>

分享lpc1788nandflsh移植文件系统资料

主控:LPC1788 NADFLSH:是来自三星的:K9F1G08UOC,128M 文件系统是使用:yaffs文件系统       YAFFS是第一个专门为NAND Flash存储器设计的嵌入式文件系统,适用于大容量的存储设备。是基于日志的文件系统,提供磨损平衡和掉电 ...…

查看全部问答>