keil stm32标准库放在哪里_STM32之PWM

脉冲宽度调制

脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效且应用十分广泛的技术,例如直流电机的控制、开关电源的输出调制、信号的传递也离不开脉冲宽度调制。

  我们接下将要讨论的便是单片机中PWM的产生与应用。在STM32单片机中,以F103C8为例,它共有四个定时器,每个定时器有四个PWM输出通道,TIM1为高级定时器,除了正常的四路PWM输出外,前三路还可以有与之互补的PWM输出,并且带有死区控制,可以用于电机控制。

   本文在介绍PWM使用的同时,顺便推广一波STM32CubeMX的应用。

c8f816a5b31193cc0564529981285597.png

相信对于很多新手来说,上来就了解工程的配置和单片机一些寄存器的配置是比较吃力的。即便是一些老手也不一定完全了解整个单片机MDK文件工程的配置,一直在套用类似于模板的东西,遇到新型的单片机便是心有余而力不足,并且现在官方标准库也是停止更新了,对于一些新型的单片机是不支持的,而STM32CubMX便可以很好的解决这个问题。即便是新手,也可以轻松学会单片机整个工程文件的配置,也能为后期的寄存器进一步学习打好基础。本文便以PWM呼吸灯程序为例,使用STM32CubeMX进行相关外设的配置和MDK工程文件生成。

在打开软件之后,点击File,选择新建工程,然后在跳出的对话框中选择STM32F103C8(本文以此单片机为例),然后点击Start Project。

15188f7653fc5fbc41c18975804a14d0.png

首先点击时钟RCC页面进行配置,由于小编使用的板子为外部时钟,(虽然STM32单片机大多提供内嵌RC振荡电路,但是其精度经出厂校准后也只有1%,而外部晶振一般在10^-5甚至更低)所以选择在高速时钟选择Ceramic Resonstar,没有使用低速时钟所以默认失能,其它配置默认参数。

0702952049f79f2e6e03117203056aec.png

接着进行SYS配置,Debug模式选择Serial Wire(小编用的是SW,与个人硬件配置有关),其它默认配置。

1064d90f9aa26212dfeaed48b339e6f6.png

       再接着配置时钟树,相信大多数没有使用过Cube的小伙伴对于时钟树的理解可能比较抽象,但是看看下图时钟树界面,整个世界亮了有木有。

        按照下图所示选择8M外部晶振,经过锁相环后倍频为9倍(小编的板子是外接的8M晶振,并且此单片机最高频率72M),然后接着给各个时钟线进行分频,当哪个时钟框变紫色则说明超过这个时钟线的最大频率,我们把各时钟线均配置为最大频率。(在不考虑低功耗的情况下,均选择其性能最佳频率)

7286c46a57affc917a149f581740db90.png

在配置完了时钟树之后,就可以配置定时器了,小编的LED是挂在PA6引脚的,拉低引脚电平灯亮。所以单击右侧单片机上的PA6引脚,选择其所在的定时器3通道1,在配置框内通道1选择生成PWM,然后在下面进行参数配置,定时器的分频和装载值填写在前期的推送中已经讲过,这里把定时器周期配置为1ms,具体不再赘述。下面有关PWM输出配置:PWM模式和通道极性,它们的作用如下图所示。

35651065f603cfd9a95b74ffd665de80.png0a8e9e8d86a412fa066f5eea7dc9ee63.png

接着在中断配置页面使能中断。

a2d44b959d5a2f4bd715f48ec19469bc.png

在这里点亮一个呼吸灯的相关端口配置就结束了。在GPIO窗口界面我们还可以看到,当单片机某个引脚被配置为PWM输出后,这个引脚就被默认配置为推挽输出功能,由于是默认配置,下面就不放图了。最后进行工程文件设置。

来到工程管理页面,首先进行工程命名,然后选择工程保存地址,再选择IDE。(本文以KEIL,也就是MDK工程文件)再进一步可以看到每个端口配置可以选择其所使用的函数库,我们默认使用HAL库。在基础设置全部配置完毕之后,点击右上角生成代码就OK了。第一次生成F1系列工程文件,还需要下载一个固件包,按照提示,点击确定就可以了。

到这里端口配置和工程生成就大功功告成了,有木有感觉很简单???

ecf4e826abf1479f5281a012320e8d53.png

(本文所示意的配置均为最基础配置,其它的没有提到的配置选项和功能还有很多,除了基础功能之外,它甚至可以根据你的配置估算单片机的功耗。对于未提到的单片机配置选项,可以自行查看单片机参考手册探索配置,对于未提到功能,感兴趣可以百度尝试食用。)

配置完成之后用KEIL打开工程,可以看到所有配置好的的初始化已经放在了相应的位置,只需要开启使用便可以了,本实验中我们用到了定时器3和它的PWM1输出通道,开启输出。

3a9053ab87bba854c06ac73e5c553ab2.png

       接着书写呼吸灯程序,由于程序单一,便直接写在中断了。

        我们通过num这个变量来不断改变输出PWM的占空比。由我们配置可知,在计数寄存器TIM3->CNT未计到TIM3->CCR1的比较值之前,PWM输出为高电平,LED灭,之后输出低电平,LED亮。呼吸灯可以划分为灯由亮到暗和由暗到亮两个过程。在本程序中,我们使用flag变量标志灯所处在亮过程还是暗过程,num由0-999循环,控制PWM输出有效电平的占空比随之加长或变短,就形成了灯的呼吸效果。本文生成的呼吸灯周期为2s.(有一点需要注意,自己书写的代码必须放在工程中规定的地方,就是各种BEGIN和END之间,否则再次使用Cube进行配置后未放在指定位置的代码将被清理)

00e767e4139991a2bf149409e3e548d7.png

678fc5b68e180ab0c3ceb28c73c41638.gif

要更好的呼吸效果和方式,可以自行探索哦!

        STM32CubeMX软件可以从STM32官网免费获取!

        点击文章末尾阅读原文可获取完整工程文件百度云链接。

        由于作者水平有限,难免有错漏之处,欢迎在公众号后台留言指出。

74388f775e1b1eda22b9d42ee8940253.gif3f9ed06009567d2a5c73a9b03f139eea.gif74388f775e1b1eda22b9d42ee8940253.gif

欢迎关注我们!!!

46d315b9f1e1ffd4d26a285e8f219b89.png

微博

a8666187ae3ae654bda2fc400a751aa9.png

B站

0e3c8977edae0ddd3dd453ee0be464c2.png

公众号

ad6ba02ed37d657b40508f4cf3d1db98.png

QQ群

ACTION

诚邀赞助

联系邮箱:neu_action@163.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(二十五)【NIPS 2017】Prototypical Networks for Few-shot Learning

完全参考博文 用来记录和学习 Introduction 原型网络的思路非常简单:对于分类问题,原型网络将其看做在语义空间中寻找每一类的原型中心。 原型中心: 针对Few-shot的任务定义,原型网络训练时学习如何拟合中心。学习一个度量函数…

python 时间函数 毫秒_利用python进行播放音频与录音,骚操作!

现如今,我们的学习知识的渠道越来越多,我们也要充分利用自己的感官去汲取知识。当我们看书累的时候,我们完全可以听过听书来学习,这样的平台也很多,pk 哥之前也写过关于下载喜马拉雅音频爬虫的方法:Python爬…

2009岁末之复用系统框架(B/S)

目的 好久没有写博赚点了,最近一直在忙着写基础的框架,为以后的职业发展多点筹码,以前写过C/S,但是现在的应用趋于浏览器,所以匆忙之间利用工作之余写了点东西。本人的水平有限,希望能博得大家一瞥。 技术 …

一建机电实务教材电子版_2020一建教材+章节习题+新旧教材对比【全科】免费送...

2020一建《各科》电子教材2020一建《工程法规》电子教材2020一建《工程经济》电子教材2020一建《公路实务》电子教材2020一建《机电实务》电子教材2020一建《建筑实务》电子教材2020一建《市政实务》电子教材2020一建《水利实务》电子教材2020一建《项目管理》电子教材2020一建…

LeetCode 1189. “气球” 的最大数量

1. 题目 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。 字符串 text 中的每个字母最多只能被使用一次。 请你返回最多可以拼凑出多少个单词 “balloon”。 示例 1: 输入&#xff1…

记录F1分数和召回率

内容 参考博文: F1分数以及micro、macro区别 对于上面说的矩阵是不是挺懵的,它的真名叫混下矩阵,看下面 混淆矩阵 所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对…

讯达机器人_科大讯飞新品频发完善场景布局“双11”斩获三大平台25项冠军

11月12日,科大讯飞发布”双11”战报,C端产品兑现AI红利实现可持续增长,一举斩获京东、天猫、苏宁易购三大平台25项冠军。11月1日至11月11日,销售额同比增长56% 。目前,科大讯飞消费者业务连续三年保持营收超过30%的增速…

常见报错原因

因为经常犯这个错,但是还不记住! 以此来告诫自己! 1. KeyError 表示当前Key就没有!!! 去检查一下,你出错的字典或者是列表(一般出这个错误肯定有个对照! )…

安装ssd后不识别网卡_100元体验纯正万兆网络:需要安装SSD的NAS服务器

万兆网络似乎离普通玩家一直很遥远,不过借着万能的闲鱼,小编100块搞到一张非常便宜的二手电口万兆网卡,配合安装固态硬盘的NAS网络存储服务器,万兆网络走起来~这张卡用的是BCM57710芯片,网上都说只能在Win 7或者同时期…

【KPGNN】运行错误与成功后的合集

出错合集 1. AssertionError 这句话的意思是: DGLGraph.readonly已经不可用了,而现在高版本的DGLGraph总是支持mutable! 记住是总是,一直!!! 所以现在由于版本问题,使用了高版本&a…

react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离

前言:本系列是针对于React在界面开发痛点的一些解决方案,只是React应用中偏向展示的一环构建一个业务与UI分离的react应用本篇是基于HOC方案并未使用Hooks业务逻辑与UI在编写一个react组件前,我们一定要弄清两件事。什么是UI?什么…

(二十六)【2021 WWW】Knowledge-Preserving Incremental Social Event Detection via Heterogeneous GNNs

题目: Knowledge-Preserving Incremental Social Event Detection via Heterogeneous GNNs 中文题目: 基于异构gnn的知识保持增量社会事件检测 学习目标 学习怎么知识增强的? 学习怎么处理时间等多个因素的? 学习怎么构建子图…

IL应用之——用IL分析接口的本质

IL反编译利器——Ildasm.exe和Reflector.exe:一:Ildasm.exe简介 这一微软VS自带工具,在上一篇博文《初识Ildasm.exe——IL反编译的实用工具》中已经做了详细介绍,这里不再鳌述;二:Reflector.exe简介 至此(1…

自定义_如何自定义协议

前言何为自定义协议,其实是相对标准协议来说的,这里主要针对的是应用层协议;常见的标准的应用层协议如http、ftp、smtp等,如果我们在网络通信的过程中不去使用这些标准协议,那就需要自定义协议,比如我们常用…

校验json格式_格式化展示,校验错误,编辑JSON,这几个JSON工具一定不能错过

今天给大家介绍几个常用JSON的工具,基本上能满足你工作中对JSON的所有需求google插件 JSONView安装好插件后,格式化接口返回的JSON,还能展开节点和关闭节点,超级方便格式化本地JSON,检验错误JSON Viewer网页版将杂乱的…

推荐系统常用评价指标和代码实现

评价指标 Recall 名称: 召回率(真阳性率) 意义:在推荐系统中,我们只关心正确推荐的有多少,也就是用户真实喜欢的,并不会关心推荐错的,所以我们用召回率,而不是准确率&a…

python timeit用法_十大Python开发技巧

Python开发指南, 超级实用足以让您震撼> Photo by Christina Morillo from StockSnap时不时地,当我了解Python的新功能时,或者我发现其他一些人不知道该功能时,我会记下它。在过去的几周中,我最近了解或实现了一些有趣的功能-S…

python编程中的经验(一直更新)

文章目录1. python基础语法1.1 怎么让两个list或者其它可以迭代的放到一起1.2 random.choice(x, n, replaceTrue) numpy中从某个数据集中选择1.3 如何根据key返回字典的value1.4 The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all…

Cairngorm初学者入门教程 第六节--Cairngorm中Command利用Delegate与Service连接

在上一节,我们利用FrontController 去映射 Event与Command 在这一节我们主要针对Command这部分动作做介紹。在RIA应用程序中,不可或缺的部份就是跟后台服务器连接进行数据传递。Command通过Delegate去做Services的部份(包含Remoting,WebServices,…等) C…

3d点击_3D打印服务加工在医疗器械行业的应用

3D打印技术如今已经很常见的出现在了我们日常的制造生产中。普通的3D打印机从最开始的几万块到如今的几千块,设备价格的降低也使得3D打印技术普及率的增加,而技术的普及也推动着技术的发展。3D打印开始应用到许多行业当中,下面悟空打印坊3D打…