上传到网站的根目录中,免费的网页模版,买完域名后怎么搭建个人网站,六安手机网站建设队列简介
队列是任务间通信的主要形式。 它们可以用于在任务之间以及中断和任务之间发送消息。
队列是线程安全的数据结构#xff0c;任务可以通过队列在彼此之间传递数据。有以下关键特点#xff1a; FIFO顺序#xff1a;队列采用先进先出 (FIFO) 的顺序#xff0c;即先…队列简介
队列是任务间通信的主要形式。 它们可以用于在任务之间以及中断和任务之间发送消息。
队列是线程安全的数据结构任务可以通过队列在彼此之间传递数据。有以下关键特点 FIFO顺序队列采用先进先出 (FIFO) 的顺序即先发送的消息会被先接收。线程安全队列操作是原子的确保在多任务环境中的数据完整性。阻塞和非阻塞操作任务可以通过阻塞或非阻塞的方式发送和接收消息。如果队列满了或者为空任务可以选择等待直到有空间或者数据可用或者立即返回。优先级继承FreeRTOS 支持基于优先级的消息传递确保高优先级任务在队列操作期间不会被低优先级任务阻塞。可变长度项队列中的项可以是不同长度的数据块而不是固定大小。 使用队列任务可以通过发送消息来共享信息从而更好地协调和同步系统中的不同部分。
创建队列 函数 描述 xQueueCreate() 动态方式创建队列 xQueueCreateStatic() 静态方式创建队列
动态创建队列时FreeRTOS会在运行时从其内置的堆中为队列分配所需的内存空间。这种方式更加灵活允许系统根据需要动态调整内存。
相反静态创建队列要求用户在编译时手动为队列分配内存而不依赖于FreeRTOS的堆管理。这使得内存的分配在编写代码时就能确定因此在资源受限或对内存使用有严格要求的嵌入式系统中可能更为合适。
总体而言动态创建提供了更大的灵活性但可能会增加堆管理的复杂性。静态创建则更为直观适用于在编译时就能确定内存分配的情况。选择使用哪种方式通常取决于系统的需求和设计考虑。
往队列写入消息 函数 描述 xQueueSend() 往队列的尾部写入消息 xQueueSendToBack() 同 xQueueSend() xQueueSendToFront() 往队列的头部写入消息 xQueueOverwrite() 覆写队列消息只用于队列长度为 1 的情况 xQueueSendFromISR() 在中断中往队列的尾部写入消息 xQueueSendToBackFromISR() 同 xQueueSendFromISR() xQueueSendToFrontFromISR() 在中断中往队列的头部写入消息 xQueueOverwriteFromISR() 在中断中覆写队列消息只用于队列长度为 1 的情况
从队列读取消息 函数 描述 xQueueReceive() 从队列头部读取消息并删除消息 xQueuePeek() 从队列头部读取消息 xQueueReceiveFromISR() 在中断中从队列头部读取消息并删除消息 xQueuePeekFromISR() 在中断中从队列头部读取消息