完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我是 PSoC6 的新手,并尝试以运行第二个任务的方式调整“ PSoC™ 6 MCU:emFile 文件系统”,该任务作为 I2C 主控运行。 i2C Master 正在读取传感器的温度和压力。 I2C 主控器基于其他演示项目"硬件抽象层 (HAL):I2C 主控器" 任务 1:尽可能快地读取传感器数值 任务 2:将数据写入 NAND 闪存或 SD 卡 我的问题是不知道如何将传感器的数据从一个任务传输到另一个任务。 或许这根本就不是个好主意,应该在一项任务中完成。 一次读取的数据是一个字符串,如"1234.3;12.34" 用于压力/温度。 我想创建一个 CSV 文件来记录一段时间内的数据。 我创建 I2C 任务的方法与示例中的 emFIlesystem 任务相同。 两者都在运行,做着它们应该做的事情,但我觉得它们之间没有任何联系。 因为我的应用程序将是高度动态的,所以必须尽可能快。 我尝试每隔 1 毫秒测量一次压力和温度。 谢谢,并致以最崇高的敬意。 |
|
相关推荐
1个回答
|
|
在FreeRTOS中,在两个任务之间传输数据的一种方法是使用队列。队列是一种用于在任务之间传递消息或数据的中间件。以下是使用队列在两个任务之间传输数据的步骤:
1. 首先,您需要创建一个队列。在FreeRTOS中,您可以使用`xQueueCreate()`函数来创建一个队列。例如: ```c #define QUEUE_LENGTH 10 #define QUEUE_ITEM_SIZE sizeof(float) * 2 StaticQueue_t xQueueBuffer; QueueHandle_t xQueue = xQueueCreate(QUEUE_LENGTH, QUEUE_ITEM_SIZE); ``` 这里,我们创建了一个队列,可以存储10个项目,每个项目包含两个浮点数(压力和温度)。 2. 在任务1中,读取传感器数据后,使用`xQueueSend()`函数将数据发送到队列。例如: ```c float pressure = 1234.3; float temperature = 12.34; xQueueSend(xQueue, &pressure, portMAX_DELAY); xQueueSend(xQueue, &temperature, portMAX_DELAY); ``` 3. 在任务2中,使用`xQueueReceive()`函数从队列接收数据。例如: ```c float receivedPressure; float receivedTemperature; if (xQueueReceive(xQueue, &receivedPressure, portMAX_DELAY) == pdTRUE) { // 处理接收到的压力数据 } if (xQueueReceive(xQueue, &receivedTemperature, portMAX_DELAY) == pdTRUE) { // 处理接收到的温度数据 } ``` 4. 确保在任务1和任务2中正确处理队列满和队列空的情况。您可以使用`uxQueueMessagesWaiting()`和`uxQueueSpacesAvailable()`函数来检查队列的状态。 5. 最后,不要忘记在不需要队列时使用`vQueueDelete()`函数删除队列,以释放内存。 通过使用队列,您可以在任务1和任务2之间有效地传输传感器数据。这种方法允许您将读取传感器数据的任务与将数据写入NAND闪存或SD卡的任务分离,从而提高代码的可读性和可维护性。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
364 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6296 浏览 2 评论
4108 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3634 浏览 9 评论
1232 浏览 8 评论
459浏览 2评论
271浏览 2评论
377浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6296浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
459浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 07:49 , Processed in 0.439423 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号