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