2024年最新单片机怎么做定时器矩阵,彻底解决各种定时问题?_单片机跑矩阵,你真的知道Golang按下开机键到启动发生什么吗

12 篇文章 0 订阅
11 篇文章 0 订阅

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

为什么要用50us?因为我产品的RFD波形定时采集频率是50us采一次。

如果你产品没定时这么频繁的功能需求,你完全可以把定时时间源配置成10ms,甚至100ms,这个是根据不同的产品去调整的。

**图右边的就是定时器矩阵,**就是各种乱七八糟的不同定时需求组合,比如LED特效定时功能的定时需求、RFD波形定时采集、RFD重复码滤波延时等等。

最终这些定时器矩阵都有一个时间单位/基准,这个时间单位/基准是由定时器时间源提供,如果我配置定时器中断是50us,那定时器矩阵的时间单位就是50us。

有了这种想法以后,剩下的就是考验你的经验和代码水平了。

三、代码设计思路

一个工程师工作越久,做过的项目越多,就要慢慢形成一个面向对象的思维

虽然上面雏形出来了,但是我相信很多人依然不知道怎么动手去写代码。

这个是正常的,最好的方法就是先抄后超

我是用面向对象的思维去做的,对于c语言来说,结构体是实现面向对象最好的方式

这里的对象不是你的男女朋友,而是世间万物皆可以当做一个对象。

比如说人是一个对象,这个对象有很多属性,比如说性别、年龄、身高、体重等等。

Ok,那在程序里,如何把这个对象的特征用结构体展现出来呢?

可以通过下面这个代码:

img

那回到我们定时器矩阵这里,我们把定时器矩阵当做一个对象

那这个定时器矩阵都需要具备哪些共同的特征

我总结了下面几个:

  1. 需要有个变量当做开关标志控制该定时器启动/停止
  2. 需要有个变量当做当前的定时值
  3. 需要有个变量当做该定时器的定时周期。
  4. 定时时间到了以后,需要去执行相应动作,为了灵活使用,需要一个函数指针。

那用结构体来表示代码如下:

img

这里很多人可能有点懵逼,我怎么想不到要这些东西呢?

这个是正常的,不用去纠结,我也不是一开始就把这几个成员都想到的,而是后面做功能的时候慢慢完善的,你刚开始抄我的思维就行了。

后面很多应用都是用这种套路去做的,比如说我们的任务管理、比如菜单这些,用多了自然就熟了,以后你自己也能设计别的对象了。

Ok,这样我们就把定时器矩阵这个对象的特征设计好了。

四、定时器代码实战

1.前面我们用结构体自定义了一个定时器的对象来,下面就要用这个定时器对象”生”出定时器矩阵。

img

我们直接用定义结构体数组的方式,T_SUM就是我们定时器矩阵的个数,也就是我产品有多少个定时器需求。

img

后面我们所有的操作都是围绕这个结构体来进行的。

2.配置定时器矩阵时间源,初始化定时器矩阵参数

A). 我们首先要给这个定时器矩阵一个时间源,也就是配置我们要去配置单片机定时器中断。

img

我们的定时频率配置的是50us,是因为我们产品有的功能最短需要50us的定时。

然后,我们需要写一个初始化函数,去调用这个定时器配置,以及初始化定时器矩阵参数。

img

B). 然后在这个50us定时器中断函数里,去实现给定时器矩阵定时代码。

img

这里,我单独写了一个函数。

然后我们在定时器中断函数里调用这个函数,实现给定时器矩阵定时。

img

3.附加功能

定时器矩阵时间源配置好了,但是我们还需要一些函数来操作定时器矩阵对吧?

A). 编写创建定时器

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值