当前位置: 首页 > news >正文

蓝桥杯物联网竞赛_STM32L071_19_输出方波信号(PWM)

国赛考了一个方波,第一次考这个,连个示波器都没有

CUBMX配置:

在这里插入图片描述
在这里插入图片描述
按上述配置刚好是32MHZ / 32 / 100 = 10KHZ

理论:

在这里插入图片描述

频率:就是一秒钟能产生多少个脉冲,如下图:

在这里插入图片描述

这算是一个脉冲,1KHZ说明一秒钟产生1000个这样的脉冲,频率越大,单位时间产生的脉冲越多,等效成的模拟信号量自然就越平稳,例如2HZ也就是一秒俩脉冲,前0.5秒憋出一个脉冲自然就不流畅

占空比:指一个脉冲中高电平占整个脉冲的份额

占空比高,自然高电平占的份额多,模拟电压也就高

分辨率:分辨率就是占空比的最小变化量

例子:

在这里插入图片描述

假设我设置上述的PULSE = 50,也就是设置了脉冲宽度为50,何为脉冲宽度呢,朴素的讲就是一个脉冲中高电平占的时间

在这里插入图片描述
上述已经设置了自动重装载值即一个脉冲占的时间为100(准确来说是1 / 1M * 100秒)

脉冲宽度为50(准确说1 / 1M * 50秒)

占空比就是:脉冲宽度 / 自动重装在 * 100% = 50%
脉冲宽度最小一次 + 1也就是由50变成51那么分辨率就是1 / 100 * 100 % = 1%
频率就是1 / (1 / 1M * 100) = 10000HZ也就是10KHZ

Keil5配置:

在这里插入图片描述

HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

初始化一下就输出方波了,由于没有示波器且这个PA0啥东西也没接所以也就不知道啥效果有条件的可以用示波器测测

相关函数:

    __HAL_TIM_SET_PRESCALER(&htim2, 32 - 1);  // 修改预分频为__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 50);  // 修改脉冲宽度__HAL_TIM_SET_AUTORELOAD(&htim2, 100 - 1);  // 修改自动重装载

有了上述函数就可以调频率,占空比,分辨率的值了

补充:

在这里插入图片描述

auto-reload preload=disable

这个函数我一直以为是计数器记满后让其归零,重新记录,但是我查阅资料好像不是

设为DISABLE时是当你修改自动重装载的值后,计数器立即产生计数溢出,然后重新计数
反之ENABLE自动重装载被写入新值后,计数器完成前旧的计数后,再开始新周期

相关文章:

  • Sketch文件轻松转换为PSD的简便方法
  • 轻松解决问题!教你文件怎么解除只读模式!
  • 史上最易懂的mysql锁 、mvvc分析
  • QFD(质量功能展开)是怎么使产品满足用户需求的?
  • 隐藏 IP 地址的重要性是什么?
  • 2024年华为OD机试真题-万能字符单词拼写-Java-OD统一考试(C卷D卷)
  • 关闭windows11磁盘地址栏上的历史记录
  • 论文敲公式敲到“崩溃”?合合信息扫描全能王“公式识别”一键解决公式提取难题
  • Leetcode 654:最大二叉树
  • LeetCode每日一题 | 2938.区分黑球与白球 | 数组逆序+计数器
  • kivy 百词斩项目 报错
  • 618网购节,电商能挡住恶意网络爬虫的攻击吗?
  • 【全开源】Java 农产品类型商城APP小程序公众号源码(APP+小程序+公众号+H5)
  • Android 动态修改APP图标
  • 【Linux】Apache服务器配置
  • Date型的使用
  • ES6之路之模块详解
  • isset在php5.6-和php7.0+的一些差异
  • JS 面试题总结
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js如何打印object对象
  • Linux gpio口使用方法
  • mac修复ab及siege安装
  • python学习笔记-类对象的信息
  • Python中eval与exec的使用及区别
  • QQ浏览器x5内核的兼容性问题
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 闭包--闭包之tab栏切换(四)
  • 仿天猫超市收藏抛物线动画工具库
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 精彩代码 vue.js
  • 目录与文件属性:编写ls
  • 深入浏览器事件循环的本质
  • 使用Swoole加速Laravel(正式环境中)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 无服务器化是企业 IT 架构的未来吗?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (2022 CVPR) Unbiased Teacher v2
  • (39)STM32——FLASH闪存
  • (7)摄像机和云台
  • (二)Eureka服务搭建,服务注册,服务发现
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • *** 2003
  • **PHP分步表单提交思路(分页表单提交)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考