FreeRTOS进程通信与消息队列
这篇标题里写的是“进程通信”,在 FreeRTOS 里更准确地说是任务间通信。任务之间不能只靠全局变量硬传数据,否则很容易出现读写时序问题。FreeRTOS 提供的队列、信号量、互斥量、事件组、任务通知、流缓冲区和消息缓冲区,本质上都是为了解决两个问题:数据怎么传过去,任务什么时候被唤醒。 比如 ADC 中断把采样数据写入缓冲区,缓冲区满后通知数据处理任务。中断里不做滤波和显示,只发一个“数据好了”的信号;任务原本阻塞等待,收到信号后进入就绪态,等调度器选中后再处理数据。这个模式比任务一直轮询标志位可靠,也更省 CPU。 一、通信方式怎么选这些通信机制不是互相替代的关系,重点是先判断传递的是数据、事件、资源所有权,还是一段字节流。 队列:传递固定大小的数据项。适合按键事件、命令结构体、传感器采样包等。 二值信号量:传递一个“事件发生”的信号。适合 ISR 通知任务、任务之间同步。 计数信号量:表示多个同类资源或者累计发生次数。适合资源池、多个缓冲块、生产者累计通知。 互斥量:保护共享资源,解决多个任务访问同一个外设或数据结构的问题。适合串口打印、LCD 刷屏、文件系统访问...
一阶倒立摆建模仿真实验
倒立摆建模仿真实验好叭,这是篇课程作业,哈哈哈哈哈水一篇。 一、研究背景倒立摆是控制理论、机器人学和自动化领域中的一个经典研究模型。倒立摆的动力学原理与双足机器人、平衡车、无人机,以及火箭发射时的姿态控制、导弹制导等平衡控制场景高度相关。研究倒立摆有助于解决这类系统的实时稳定控制问题。 二、问题描述关于倒立摆的问题描述如下: 本例中取小车质量 $M=2kg$,摆杆质量 $m=0.1kg$。后面建模里 $l$ 按“转动支点到摆杆质心的距离”理解,并代入 $l=0.5m$。现需控制小车的作用力 $F$,使得摆杆保持竖直状态。 三、数学建模对于图中模型,现做以下标注: 牛顿欧拉方法从传统的力和角度的分析,根据牛顿第二定律可写出摆杆在水平方向和竖直方向的力平衡方程: \begin{cases} m\frac{\mathrm{d}^{2}}{\mathrm{d} t^{2}}(y + l\sin\theta) = H \\ m\frac{\mathrm{d}^{2}}{\mathrm{d} t^{2}}(l\cos\theta) = V - mg \end{cases}根据摆杆质心...






