编辑与调试    顺序结构    选择结构一    选择结构二    循环一     循环二    函数递归与嵌套函数   &nb
在之前的学习中,我们知道了数组的使用方法。它可以设置成任意维度。以下是数组的演示图片:可以直接调用 a[i] , 访问 a 数组的第 i 个元素。但是有些情境下,我们无法使用数组更方便地解决问题。比如,现在有 n 个学生考语文和数学两门科目,每个学生每门课都有一个成绩,需要存储这些成绩,并且直观地输出这些成绩。如何解决?首先我们可能会想到用二维数组的方法,
结构指针作为参数传递函数中的参数列表本质上都是原来实参的副本,即下面代码中的root,指的是main函数中Troot的副本,由于是指针,所以副本和实参指向的都是同一个内存单元,如若只是改变副本所指内存单元的数据,那么实参内存所指的数据也同样被改变;但是由于在函数内部,改变了副本的内存单元,实参的内存单元并没有发生改变,所以实参的数据并没有跟着副本一起改变。 如果想改变实参的数据,那么应该传递结构
xQueueCreate原型:portBASE_TYPE xQueueReceive( xQueueHandle xQueue, void *pvBuffer, portTickType xTicksToWait );
原创 2021-11-12 14:21:51
3152阅读
学习两章的笔记:----------------------------------------------------- FreeRTOS的任务管理: /*任务与调度器的基本概念 任务的状态 FreeRTOS的任务相关函数*/ 任务:一个while(1)的函数,可认为是一系列独立任务的集合。每个任务在自己的环境中运行 调度器:在任务切入切出时保存上下文环境(寄存器值、堆栈内容)
文章目录相关文章1 前言2 xQUEUE3 相关概念3.1 数据结构3.2 收发数据堵塞4 常用函数4.1 创建队列4.2 发送数据4.3 接收数据4.4 删除队列5 举例6 总结 1 前言任务之间的同步(同步就是任务之间做数据交互,或为两个任务之间的通讯),任务和中断之间的同步都可以依靠消息队列,从而实现异步处理,FreeRTOS的队列采用FIFO(先进先出)缓冲区,具体如下图所示;2 xQU
/********************************************************************** * 版权所有 (C)2017, Wang maochun。 * * 文件名称:stu.c * 文件标识:无 * 内容摘要:演示程序 * 其它说明:主要学习三点知识: 1.建立一个结构,类型名为student
转载 11月前
112阅读
文章目录前言一、消息队列是什么?二、消息队列的作用三、FreeRtos中消息队列API的调用函数 xQueueCreate函数 xQueueSend函数 xQueueReceive函数 xQueueSendFromISR函数 uxQueueMessagesWaiting函数 uxQueueSpacesAvailable函数 xQueuePeek函数 xQueueOverwrite四、基于e
目录队列简介队列结构队列操作队列实验    在实际的应用中,常常会遇到一个任务或者中断服务需要和另一个任务进行“沟通交流”,这个“沟通交流”的过程其实就是消息传递的过程。队列是为了任务与任务,任务与中断之间的通信而准备的。可以在任务与任务,任务与中断之间传递消息,队列中可以在存储有限的,大小固定的数据项目。 队列简介FreeRTOS的通信介质是队列,队列是一个先进先
FREERTOS学习笔记三-消息队列1.实验内容 实验二内容:创建两个动态任务,任务一控制LED的闪烁,任务二用于检测按键。当按键KEY0按下时,任务一被挂起;当按键KEY1被按下时,任务一被取消挂起。 实验三是在实验二的基础上进行修改,增加一个消息队列和两个任务进程;任务二按键检测,当按键被按下时,会发生消息;任务三和任务四负责接收消息。2.CubeMX的配置1.1添加两个优先级相同的任务1.2
FreeRTOS消息队列 传递结构指针和结构异同1 消息队列传递结构指针和结构异同2 使用队列传递复合数据类型3 利用队列传递数据的指针(处理速度更快)3.1 指针指向的内存空间所有权必须明确3.2 指针指向的内存空间必须有效传递结构的指针传递结构本身4 传递结构指针和结构本身的异同5 验证5.1 结构传值模式5.2 传递结构指针模式5.3 memcpy 函数5.4 mems
背景我们假定现在创建了3个工作线程,这3个线程都需要通过串口输出日志或内容。很简单的认为,我们可以做到各个任务连续输出自己线程的内容,实际上不是的,这涉及到了多线程原理,有时间跟大家说说,或者大家可以去了解了解。 在这篇文章只涉及题目提出的问题解决方法。准备工作STM32 Cube系列软件开发工具一块可以使用的STM32单片机一个ST LINK 下载器 和 一个 USB 转 TTL一个可以正常工作
 由于看到的FREERTOS的例程中关于消息队列的代码,大多数都是传递的一个字节的数值;而在实际应用中,需要传递的数据类型可以是浮点数,也可以是数组,也可以是uint16数据,所以上述链接的传递结构指针的思路很符合我的需求。同时,使用RTOS+消息队列的处理方式,至少有以下两个优点:1、便于开发,因为各个模块之间是通过消息队列进行数据交互,没有直接耦合,无需像裸机编程一样进行全局变量的
FreeRTOS消息队列基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的程序。这些独立的任务之间的通讯与同步一般都是基于操作系统提供的IPC通讯机制,而FreeRTOS 中所有的通信与同步机制都是基于队列实现的。消息队列是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传送信息,实现了任务接收来自其他任务或中断的不固定长度的消息。任务能够从队
队列背景队列简介队列结构队列创建向队列发送消息队列上锁和解锁从队列读取消息 背景实际的应用中,常常会遇到一个任务或者中断服务需要和另外一个任务进行“沟通交流”,这个“沟通交流”的过程其实就是消息传递的过程。为此,FreeRTOS 提供了一个叫做“队列”的机制来完成任务与任务、任务与中断之间的消息传递。本文主要结合队列源码分析了创建、发送到接收的过程。队列简介列队入队和出队的过程可以用下面图演示
转载 2024-03-25 13:48:01
155阅读
这几天做图论的 最小生成树和最短路 什么的。整了整memset,把我对memset的理解说下吧。 相信大家都会用string.h下的memset 赋值吧。很简单,特别是对于搜索时候 vis数组的赋值,最小生成树和最短路的used数组也不错。但是,都知道memset只能赋0和-1,内部机构是通过按位来实现的。 而这次,来讲一下memset赋值。我们可以用memset赋 0xkf
…增加邮箱部分、任务通知发送消息 Demo 2021/11/28 …增加事件标志组和对应的测试 Demo 2021/11/29 …增加互斥量 优先级继承 Demo 2021/11/29#### 目录 * [前言](#_8) * [一、任务通知与信号量、事件标志组](#_27) * + [1.1 基本概念](#11__29) + - [1.1.1 任务通知](#111__34) - [1.
文章目录01 - 通信介质02 - 通信方式03 - 通信操作04 - 总结   在第一篇概念的思维导图中,任务的下一个概念就是队列,一个实际的FreeRTOS系统肯定会有多个任务,这些任务经常需要协同运作,因此必然需要通信,不止任务和任务之间,任务和中断之间也需要通信。对于通信,需要了解通信介质、通信方式和通信操作。01 - 通信介质  FreeRTOS的通信介质是队列,队列是一个先进先出的数
sort()是可变对象(字典、列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值。sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组、字符串是不具有这些方法的,如果调用将会返回一个异常。代码如下:>>> a=[5,4,3,2,1] >>> a.sort() >>> [1, 2, 3, 4, 5] &gt
13. 消息队列消息队列是一种常用于任务键通信的数据结构,队列可以在任务与任务间、中断与任务间传递信息,实现了任务接收来自其他任务或者中断的不定长数据。任务能从队列中读取信息,当队列中的消息为空时,读取消息的任务将被阻塞。用户还可以指定阻塞的任务时间xTicksToWait,在这段时间中,如果队列为空,该任务将保持阻塞状态以等待队列数据有效,当队列中有新消息时,被阻塞的任务会被唤醒并处理新消息。当
转载 2024-04-19 12:05:57
44阅读
  • 1
  • 2
  • 3
  • 4
  • 5