(hello大家好我又回来了,鸽了这么久十分抱歉,各位看官老爷轻喷。博主又要参加电赛了,刚好准备把去年学过的32资料再翻出来整理成博文,也刚好复习一下。今年前半年因为疫情原因一直在家摆烂,接下来几个月会两日一更,哈哈哈大家监督我。)
话不多说,我们进入正题
本章主要讲解STM32的定时器以及帮助大家使用CubeMX编写定时器中断程序,进行HAL库的学习和使用。
单片机的定时/计数器,故名思义就是用于精确定时一段时间后,执行特定代码程序的用途。使用定时器会比使用软件延时函数(delay)更加精准,举例应用如,基于STM32的频率计。定时器往往结合中断程序一起使用。
以STM32F103系列产品为例,其拥有:
4个通用定时器(TIM2~TIM5)
2个高级控制定时器(TIM1和TIM8),功能更强大
2个基本定时器(TIM6和TIM7),主要用于产生DAC触发信号
1个实时时钟(RTC)
2个看门狗定时器
1个系统滴答定时器(SysTick时钟),主要用于精确延时(delay函数)
(定时器时钟源结构图)
(时钟单元结构)
除内部时钟外,其他3种时钟源通过TRGI(触发)输入
(1)内部时钟,值得主要的是,定时器的内部时钟源不是直接来着APB1或APB2,而是APB1或APB2的一个倍频器
(2)外部时钟模式1,通过外部输入脚(TIx),包括外部比较捕获引脚TIF_ED,TI1FP1,TI1FP2。计数器可以在选定引脚的上升沿还是下降沿开始计数
(3)外部时钟模式2,计数器在ETR引脚的上升沿或下降沿开始计数
(4)内部触发输入(ITRx,x=0~3)意思是可以配置一个定时器作为另一个定时器的预分频器
向上计数模式
向下计数模式
中央对齐计数模式

参考上面的结构图

我们能看到三个重要的寄存器
预分频器(PSC)
计数器(CNT)
自动重装载寄存器(ARR)
计数器寄存器 (TIMx_CNT)存储的是当前的计数值。预分频器 (TIMx_PSC)为多少个SK_PSC脉冲计数一次,预分频器的值为1(预分频寄存器默认为0,为不分频),则为两个脉冲计数一次。即为二分频。简单来说,如果要10000分频,则预分频器的值为10000-1。
自动重装寄存器 (TIMx_ARR)存储的是计数器的溢出值,例如,计数器递增计数到36计数器溢出,触发一次事件。而实际上为37个脉冲触发一次溢出事件(从0开始计数)。
记住该公式即可,大家一定要熟练掌握定时时间计算!!!!!!!!!

首先和之前一样,我们先选择HSE外部晶振
然后开始配置时钟树,设置如下图所示,使定时器主频为72MHz。而TIM2是挂接在APB1上的,所以也就是要让APB1这儿最终为72MHz

接着回到pinout&configuration界面,选择左边timers中的定时器,以TIM2为例,下图正中即为TIM2配置界面
简单介绍一下各个配置选项
Slave Mode和Trigger Source都是用于上文说到的设置定时器主从配置的选项,暂时用不到
Clock Source:定时器时钟源,选择Internal Clock
下面的Channel全关disable即可
然后看正下方,如下图所示
填入PSC的值为35999
触发模式为上升沿触发(也可以选择down为下降沿)
ARR的值为999
CKD(时钟分频因子)选择no Division不分频
preload这项是定时器使能,选enable
这样填ARR和PSC的值实现的是主频72MHz定时器定时0.5s,
不会计算的去前面看公式和那个例题

接下来开定时器中断
最后就是generate,下图为使用clion的配置演示(注意第一个红圈文件名要和clion里面生成的ioc文件名一样,否则不能覆盖),如果是用keil的朋友,IDE那一个红圈那要选MDK-ARM
这是TIM2初始化函数,里面就是我们刚才的配置代码和一些异常接口
这是和定时器相关的一些函数,我们了解一下就行
我们只要在中断回调函数HAL_TIM_PeriodElapsedCallback()中编写程序就可
即在main函数中重写中断回调函数

1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我正在寻找一个用ruby演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent
我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa