FreeRTOS第四天

2024-04-04 21:36
文章标签 第四天 freertos

本文主要是介绍FreeRTOS第四天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。

进制信号量:信号量的数值只有0和1。(用于共享资源的访问)
计数型信号量: 计数型信号量的值一般是大于或者等于2 (生产者和消费者模型)


2.使用技术型信号量完成生产者和消费者模型实验。

void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask *//* Infinite loop */osDelay(4000);for(;;){			osSemaphoreAcquire(myCountingSem01Handle,osWaitForever);printf("生产一辆车\r\n");osSemaphoreRelease(myCountingSem01Handle);osDelay(1000);		}/* USER CODE END StartDefaultTask */
}/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the myTask02 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{/* USER CODE BEGIN StartTask02 *//* Infinite loop */osDelay(4000);	for(;;){			osSemaphoreAcquire(myCountingSem01Handle,osWaitForever);printf("消费一辆车\r\n");osSemaphoreRelease(myCountingSem01Handle);osDelay(1000);}/* USER CODE END StartTask02 */
}

运行结果:


3.总结FreeRTOS中同步和互斥的五种方法的使用方法

FreeRTOS中互斥量主要就是用于保护共享资源,保证数据访问的一致性和正确性。
死锁:多个任务或者线程因为争夺同一个共享资源而发生了互相等待的情况,导致程序无法继续运行的情况。

在FreeRTOS中互斥量存在的问题:
        在Linux中互斥锁一般是由哪个线程获取哪个线程释放。
        在FreeRTOS中不遵循哪个任务获取哪个任务释放
        递归锁:递归锁指的是可以多次获取,多次释放


4.总结任务通知和其他任务通信机制的区别

FreeRTOS中有一种任务通信方式:队列,信号量,互斥量,事件组,任务通知

区别:队列,信号量,互斥量,事件组在使用之前都需要先创建,才能使用,任务通知无需创建即可使用。

队列、信号量、互斥量、事件组 多对多通信任务通知是多对一通信。(只需要知道要通知的任务ID即可)
队列、信号量、互斥量、事件组需要被创建,所以消耗的资源也是比较多。
任务通知不需要被创建消耗的资源少


5.根据文档和录屏学习一下软件定时器,了解软件定时器的作用和软件定时器和硬件定时器的区别

这篇关于FreeRTOS第四天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876870

相关文章

项目训练营第四天

项目训练营第四天 前端部分修改 前端用的是WebStorm和Ant Design Pro框架 Ant Design Pro是比较流行的一个前端登陆、注册、管理框架,能帮我们快速实现前端界面的开发 效果大致如图 使用起来也极为方便,首先在WebStorm 控制台中输入如下命令 # 使用 npmnpm i @ant-design/pro-cli -gpro create mya

【FreeRTOS】任务管理与调度

文章目录 调度:总结 调度: 相同优先级的任务轮流运行最高优先级的任务先运行 可以得出结论如下: a 高优先级的任务在运行,未执行完,更低优先级的任务无法运行b 一旦高优先级任务就绪,它会马上运行(假设厨房着火了,会马上去灭火)c 如果最高优先级的任务有多个,他们轮流运行 他们都是使用链表进行管理 打开CubeMX,最高优先级56 56个List, Rad

【FreeRTOS】创建任务_使用任务参数

参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 文章目录 前言编写任务函数创建任务任务保护措施写了个bug疑问遗留问题效果freertos.c 学习链接 前言 配套源码:06_create_task_use_params 我们创建3个任务,使用同一个函数,但是在LCD上打印不一样的信息。 3个任务使用同一个函数,但是他们运行的栈不一样

【FreeRTOS】任务状态改进播放控制

这里写目录标题 1 任务状态1.1 阻塞状态(Blocked)1.2 暂停状态(Suspended)1.3 就绪状态(Ready)1.4 完整的状态转换图 2 举个例子3 编写代码 参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 本节课实现音乐任务的创建,音乐播放的暂停与继续播放,删除任务。 代码为:08_task_priority

【FreeRTOS】删除任务 用遥控器控制音乐

参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 学习视频:【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS(FreeRTOS教程 基于STM32,以实际项目为导向)】 【精准空降到 01:22】 https://www.bilibili.com/video/BV1Jw411i7Fz/?p=19&share_source=copy_web&vd_

[FreeRTOS 功能应用] 互斥访问与回环队列 功能应用

文章目录 一、基础知识点二、代码讲解三、结果演示四、代码下载 一、基础知识点 [FreeRTOS 基础知识] 互斥访问与回环队列 概念 [FreeRTOS 内部实现] 互斥访问与回环队列 [FreeRTOS 内部实现] 创建任务 xTaskCreate函数解析 本实验是基于STM32F103开发移植FreeRTOS实时操作系统,实现多任务同时读写队列数据操作。 使用工具:

【昇思25天学习打卡营打卡指南-第四天】数据变换 Transforms

数据变换 Transforms 通常情况下,直接加载的原始数据并不能直接送入神经网络进行训练,此时我们需要对其进行数据预处理。MindSpore提供不同种类的数据变换(Transforms),配合数据处理Pipeline来实现数据预处理。所有的Transforms均可通过map方法传入,实现对指定数据列的处理。 mindspore.dataset提供了面向图像、文本、音频等不同数据类型的Tra

基于STM32 HAL库 的FreeRTOS移植步骤(结合Stm32CubMX)

结合Stm32 CubMX软件生成的带FreeRTOS的工程,移植到自己的项目中来。 一、硬件准备         STM32L15系列         一个ST-Link下载器及其连接线等。二、软件准备        FreeRTOS源码;        一个基于STM32 HAL库的基础例程(跑马灯例程)。        HAL库的移植可以自行百度。三、移植FreeRTOS 3.1 添加F

【转】FreeRTOS通用移植,以keil和IAR工程 M7核为例

目录 keil: IAR keil: 原文在https://bbs.eeworld.com.cn/thread-1281875-1-1.html 本篇讲述移植FreeRTOS,并创建运行一个任务,对象芯片为M7系列的兆易创新GD32H7xx系列。 一.准备工作 1.下载FreeRTOS源码官网 http://www.freertos.org/ 或者托管网站FreeRTOS R

STM32 FreeRTOS应用

在《按键控制蜂鸣器鸣笛》的程序基础上,将功能导入到FreeRTOS系统上跑,实现检测扩展板上的KEY1状态,控制蜂鸣器鸣笛。按一下按键,蜂鸣器滴滴滴响(每200毫秒响一次),再按一次按键,蜂鸣器关闭。 配置FreeRTOS信息 1.从BEEP的项目里导入ioc文件,并命名为FreeRTOS。 2.点击Middleware->FREERTOS,选择CMSIS_V1,点击Tasks and Qu