FreeRTOS的线程间通信线程间通信1、什么是线程间通信2、最简单的通信方式3、线程间的专用通信方式4、专用通信方式的通信原理一、信号(Signal Events)1.1、什么是信号通信1.2、信号这个整形数的范围1.3、宏osFeature_Signals1.4、APIosSignalClear(清除信号)osSignalSet(发送
osThreadCreate函数原型osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument)功能:使用 osThreadDef 宏所定义的结构体变量来创建一个线程。创建好线程后,然后进入 READY 状态,等待任务管理来调度运行。参数参数 1:指定osThreadDef所定义结构体变量的指针,通过该指针即可访问结构体变量,然后使用里面的信息来创建线程。由于结构体变量名字的前面有一个os_thread
如果我们自己移植代码就是使用的是FreeRTOS的原生API接口,如果使用STM32CubeMX来配置工程就是使用的CMSIS API接口,是对FreeRTOS的原生API接口进行了封装。为什么学习CMSIS 的 RTOS 接口?目前使用的是FreeRTOS,我们可以直接介绍FreeRTOS的原生接口(原生API),源码移植就是使用的是原生API接口。我们这里选择介绍CMSIS接口,实际上CMSIS接口和原生接口都是类似的,因此学会了CMSIS 的RTOS接口之后,大家自己也能自学对应的原生接口,当然毕
接着上一章的继续FreeRTOS.h#include "FreeRTOS.h"#include "task.h"#include "main.h"#include "cmsis_os.h"//存放 defaultTask 任务(线程)的线程 ID也就是句柄,ID(句柄) 为线程的唯一识别号osThreadId defaultTaskHandle;osThreadId myTask02Handle;//存放 myTask02 线程的线程 ID(句柄)void StartDefaultTa
一、什么是任务在裸机系统中,系统的主体就是main函数里面顺序执行的无限循环,这个无限循环里面CPU按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务,也可以称之为线程。void task1(void *pvParameters){ /* 任务主体,无限循环且不能返回 */ for(;;) { /* 任务主体代码 */ vTaskDelay( 2000 ); }}二、任务状态FreeRTOS中的任务永
使用HAL对STM32F407ZGT6单片机移植FreeRTOSFreeRTOS源码下载include文件夹portable文件夹移植FreeRTOS源码1、添加 FreeRTOS源码2、向工程分组中添加文件3、添加相应的头文件路径4、修改SYSTEM文件1、修改sys.h文件2、修改 usart.c文件3、修改 delay.c文件总结我们既然要学习FreeRTOS,如果不是用STM32CubeMX来配置工程的话们就要去官网下载源码:https://www.freertos.org/FreeRTOS源码
FreeRTOS的编程风格学习一个RTOS,搞懂它的编程的风格很重要,这可以大大提供我们阅读代码的效率。下面我们就以 FreeRTOS里面的数据类型、变量名、函数名和宏这几个方面做简单介绍。1、数据类型在FreeRTOS中,使用的数据类型虽然都是标准C里面的数据类型,但是针对不同的处理器,对标准C的数据类型又进行了重定义,给它们取了一个新的名字,比如char重新定义了一个名字 porCHAR,这里面的port表示接口的意思,就是FreeRTOS要移植到这些处理器上需要这些接口文件来把它们连接在一起。但
上一章我们学习了FreeRTos的任务基础知识,本章就正式学习如何使用 FreeRTos中有关任务的AP函数。本来本章想讲解 FreeRToS的任务原理知识的,但是很多初学者还没使用过 FreeRTOS,甚至其他的RTOS系统都没有使用过,所以一上来就是苦涩的原理很可能会吓跑大批初学者。所以本章做了调整,先学习怎么用,先知其然,后面在知其所以然。使用过以后再学习原理、看源码就会轻松很多。本章分为如下几部分:1、任务创建动态创建任务#define TASK1_TASK_PRIO 1 //任务优
现在开始使用FreeRTOS,对于代码的编写很简单,FreeRTOS是可裁剪的,想要什么不想要什么直接在FreeRTOSConfig.h文件中取消和打开相关的宏定义就可以了。下面是小编的FreeRTOSConfig.h文件配置,你可以作为参考。FreeRTOSConfig.h/* * FreeRTOS V202107.00 * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * http
什么是临界段//开始任务任务函数void start_task(void *pvParameters){ taskENTER_CRITICAL(); //进入临界区 //创建TASK1任务 xTaskCreate((TaskFunction_t )task1_task, (const char* )"task1_task", (uint16_t )TASK1_STK_SIZE,
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号