文章目录

  • 1.认识PWM
  • 2.STM32CUBEMX实现呼吸灯
    • 2.1查阅手册
    • 2.2配置RCC(打开外部时钟),SYS(选择调试接口)
    • 2.3配置TIM3(定时器3),TIM4(定时器4)
    • 2.4配置Clock Configuration(时钟)
    • 2.5保存文件,生成项目代码
    • 2.6代码编写(修改main.c文件)
    • 2.7编译,烧录,测试
  • 3.总结
  • 4.参考

1.认识PWM

  • 含义

PWM(Pulse Width Modulation)即脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术;它是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。

  • 基本原理

PWM就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也可以这样理解,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。

  • 优点及应用范围

由于其控制简单、灵活和动态响应好等优点而成为电力电子技术应用最广泛的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习PWM具有十分重要的现实意义。

2.STM32CUBEMX实现呼吸灯

2.1查阅手册

管脚PA6是TIM3的PWM输出通道,通道1

管脚PB7是TIM4的PWM输出通道,通道2

2.2配置RCC(打开外部时钟),SYS(选择调试接口)


2.3配置TIM3(定时器3),TIM4(定时器4)

时钟源“Internal Clock”处进行勾选,通道1选择“PWM Generation CH1”

设置分频系数为71,计数周期为500,其它默认,设置占空比初始值为10,其实这里不写也没影响,定时器4的配置过程和定时器3大同小异不过多赘述

2.4配置Clock Configuration(时钟)

2.5保存文件,生成项目代码

2.6代码编写(修改main.c文件)

先定义一个变量,用来存储占空比:

uint16_t duty_num = 10;//初值设为10.

然后开通TIM3,TIM4的通道,输出PWM。

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);//TIM3,1通道
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);//TIM4,2通道

最后设置每隔50毫秒,占空比加10,如果超过500(也就是PWM周期),自动变成0.

  while (1){/* USER CODE END WHILE */
HAL_Delay(50);duty_num = duty_num + 10;if(duty_num > 500){duty_num = 0;}__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,duty_num);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,duty_num);/* USER CODE BEGIN 3 */}

2.7编译,烧录,测试

线路连接:

效果展示(gif):

3.总结

对PWM有了更层次的理解,也掌握了如何利用此知识,配合STM32CUBEMX实现呼吸灯效果,而且对查阅手册也更熟练了

4.参考

http://www.mcublog.cn/stm32/2021_01/stm32cubemx-pwm-huxideng/

【嵌入式系统基础第九周作业】---LED呼吸灯相关推荐

  1. 【嵌入式系统基础第九周作业】--嵌入式实时操作系统uc/OS

    文章目录 1.CubeMX建立项目 1.1配置RCC(打开外部时钟),SYS(选择调试接口) 1.2配置GPIO(PC13用于点亮LED灯) 1.3配置USART1(串口输出) 1.4保存,生成项目文 ...

  2. 【嵌入式系统基础实验一】-----led流水灯及串口通信的HAL库方式和寄存器编程方式实现,输出波形检测

    文章目录 1.实验知识点简要解析 1.1串口通信协议 1.2 RS232.485电平与TTL电平的区别 1.3 USB/TTL转232"模块 2.LED流水灯的寄存器地址 和HAL库这两种方 ...

  3. 嵌入式STM32—第一天GPIO实现led呼吸灯

    1.软件及工程环境搭建 就不介绍了,可以直接用现成的 链接:https://pan.baidu.com/s/1GaSYpNm6yh-lZZmqRdXxvQ 提取码:dy63 相关库文件 链接:http ...

  4. 【嵌入式系统基础第四周作业a】--STM32寄存器HAL库方式的LED程序

    文章目录 stm32f103c8t6板子点亮流水灯 1.部分原理阐述 1.1地址映射: 1.2寄存器映射: 1.3时钟配置: 1.4输入输出模式设置: 1.5STM32开发板流水灯操作: 2.具体实验 ...

  5. 嵌入式系统基础A就9周作业

    一.实验内容和任务 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LE ...

  6. 2019年春季学期第九周作业

    A Q 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 2019春第九周作业 我在这个课程的目标是 了解并且应用结构体和数组的知识 这个作业在那个具体方面帮助我实现目标 掌握了数组的简单 ...

  7. 20189200余超 2018-2019-2 移动平台应用开发实践第九周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第九周作业 图形和制定视图 Android视图系统.层次关系 Android应用设计和Web应用设计类似,也分前端和后端设计.Andr ...

  8. 嵌入式系统基础知识总结

    一.嵌入式系统基础 1.嵌入式系统的定义 1.1  定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统. 1.2  嵌入式系统发 ...

  9. 2019春第九周作业

    这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 2019年春季学期第九周作业 我在这个课程的目标是 我希望能够通过学习C语言的知识,编写程序 这个作业在哪个具体方面帮助我实现目标 这个作 ...

最新文章

  1. 9.5. SELINUX
  2. 【ACM】杭电OJ 5055(Bob and math problem)
  3. VTK:数据集表面用法实战
  4. 开始学习一个指令 directive 并了解指令的意义
  5. 探索SwitchYard 2.0.0.Alpha2快速入门
  6. 系统架构设计师 - 系统可靠性设计
  7. python程序代码_python基础二
  8. zabbix获取mysql主从状态_zabbix监控MySQL主从状态
  9. Java中的自定义注解
  10. QCC300x hello world
  11. ASCII码判断大小
  12. TASKCTL调度服务平台节点管理
  13. 2022焊工(初级)操作证考试题库及答案
  14. GeoNet Deep Geodesic Networks for Point Cloud Analysis
  15. 数据分析团队的搭建与思考
  16. Mediakit报告设备商的空间不足以执行此操作的纯MAC解法
  17. Java.lang.RuntimeException: Parcel: unable to marshal value
  18. Vue学习之Vant图标使用及问题
  19. RHEL6配置本地源
  20. python pandas合并单元格_利用Python pandas对Excel进行合并的方法示例

热门文章

  1. 使用bat脚本运行jar程序 cmd下解决乱码问题
  2. 性能监控工具-----ServerAgent
  3. 网络基础:(二)路由选择基础与静态路由
  4. 计算机电路基础第二版张虹,第1章节电路的基本概念与剖析方法——第1讲.ppt
  5. Vue3究竟好在哪里?
  6. 【latex】参考文献bbl错误,Package inputenc Error,Misplaced alignment
  7. 18.3 KSM页面小结
  8. 冠状面、矢状面、横断面
  9. c# Thread 线程详细讲解
  10. 视频编解码学习:理论基础