1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有几个水流传感器,我想为其使用硬件中断。我不知道该怎么做。
为了避免多次编写相同的代码,我必须编写一个用于处理传感器的类,然后在应用程序环境中创建多个实例以分别处理每个传感器。要么我需要在中断处理程序中创建一个类的实例,用内存中某处的某些数据初始化它,因为我需要存储值(例如升计数器,当前水流量值)。 我还没有尝试过 Espressif SDK,只有 Arduino,但即使在那里我也遇到了这个问题:必须使用静态方法作为硬件中断的处理程序,但在这种情况下,我无法访问变量和实例方法。 请告诉我,这个问题是如何解决的,也许我应该阅读什么?我不太了解C++。这可能很简单,但不适合我。 为此创建 FreeRTOS 任务可能更容易。任务等待信号量或队列,然后处理传感器。您的中断或您的普通代码可以引发信号量或将某些东西放入队列并让任务处理这件事。 通常的方法是创建一个或多个类的实例作为全局变量,这意味着它们被分配和初始化一次,然后它们的成员函数可以从 ISR 或任何其他代码中调用。这样,ISR 不必每次都分配/初始化一个新实例,并且实例可以独立于 ISR 的范围维护其数据。 “C”方法代替面向对象的特性,将创建一个或多个函数,这些函数接收作为参数的“上下文”,它们在这些函数上运行。这个“上下文”参数通常是指向保存数据的某些结构(ure)的指针,例如要处理哪个传感器实例。事实上,这正是 C++ 和其他 OO 语言“在幕后”为您所做的。等价于 C++“sensorInstance.doSomething(x)”的 C 语言类似于“flowsensor_doSomething(&sensorInstance, x)”。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1932个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36419 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4831 浏览 1 评论
6103 浏览 1 评论
6815 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4247 浏览 0 评论
642浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
639浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
640浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
727浏览 2评论
841浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 18:38 , Processed in 1.412622 second(s), Total 74, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号