freertos

Free RTOS学习随笔(1),临界区代码

旧城冷巷雨未停 提交于 2020-08-16 03:25:56
Free RTOS学习随笔(1),临界区代码 基本介绍 Free RTOS中临界区代码常用函数 任务级临界代码保护 调用方式 实现原理 中断级临界代码保护 调用方式 实现原理 基本介绍 临界区代码指的是那些必须完整执行、不能被打断的代码,比如在初始化一些外设的时候,需要按照严格的时序进行,这样的代码是不能被中断打断的。 Free RTOS在进入临界区代码时,需要关闭中断,当临界区代码完整执行后再打开中断。 临界区代码一定要尽可能精简,进入临界区关闭中断后,优先级低于 configMAX_SYSCALL_INTERRUPT_PRIORITY 的中断不会被及时响应。 简单的说原理嘛,就是要运行临界区代码的时候,先把全局中断关了,防止运行临界区代码的时候,被中断打断,等代码运行完了,再把全局中断打开。 Free RTOS中临界区代码常用函数 taskENTER_CRITICAL ( ) ; //任务级临界代码保护 taskEXIT_CRITICAL ( ) ; taskENTER_CRITICAL_FROM_ISR ( ) ; //中断级临界代码保护 taskEXIT_CRITICAL_FROM_ISR ( ) ; 任务级临界代码保护 调用方式 taskENTER_CRITICAL() 和 taskEXIT_CRITICAL() 是任务级的临界代码保护,顾名思义,一个是进入临界区

LwIP应用开发笔记之十:LwIP带操作系统基本移植

我们两清 提交于 2020-08-14 17:55:14
现在,TCP/IP协议的应用无处不在。随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛。在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结。 1 、技术准备 我们采用的开发平台是STM32F407和LwIP协议栈。在开始之前,我们需要做必要的准备工作。 首先要获得LwIP的源码,在网上有很多,不同版本及不同平台的都有,不过我们还是建议直接从官方网站获得。其官方网站如下: http://savannah.nongnu.org/projects/lwip/ 其次,需要硬件平台,我们采用了STM32F407ZG+DM9161的网络接口方式,这并不是必须的,其他硬件平台也是一样的。 最后,因为我们后面要在操作系统下移植,采用的操作系统是FreeRTOS,所以还需下载FreeRTOS的源码。同样建议从官网下载: https://www.freertos.org/index.html 2 、 LwIP 简要说明 LwIP是一款免费的TCP/IP协议栈,但它的功能趋势十分完备。LwIP 具有三种应用编程接口 (API): Raw API :为原始的 LwIP API。它通过事件回调机制进行应用开发。该 API 提供了最好的性能和优化的代码长度,但增加了应用开发的复杂性。 Netconn API :为高层有序 API,需要实时操作系统 (RTOS)的支持

手把手教你移植FreeRTOS到GD32F350RX中

戏子无情 提交于 2020-08-14 13:48:44
本文讲解的是使用移植FreeRTOS到GD32F350RX中(基于KEIL 5编译器)。 系统移植之后创建了3个任务,LED1,LED2,LED3交替闪烁,每个LED的闪烁交替周期不一样。 FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。 一、FreeRTOS源码下载   首先需要下载FreeRTOS的源码: FreeRTOS源码 https://www.freertos.org/a00104.html   下载之后解压。 二、GD32F350RX工程   在开始移植之前,我们需要准备一个GD32F350RX的工程文件,需要先确保这个工程能够跑去来。   GD32F350RX工程可以在兆易创新的官网上下载,对于工程创建运行不在本文的讨论范围之内。   本文使用的是一个LED的工程,运行之后可以看到三个LED交替变化闪烁。   创建一个FreeRTOS文件夹用于存放FreeRTOS的内核源码文件. 三、FreeRTOS的移植   打开我们下载解压的FreeRTOS源码文件夹。 1、FreeRTOS目录结构介绍 打开文件夹之后有两个文件夹:一个是FreeRTOS,另一个是FreeRTOS-Plus。

TouchGFX4.13 + FreeRTOS

纵然是瞬间 提交于 2020-08-14 04:05:49
简介 基于STM32F746使用FreeRTOS移植TouchGFX,学习图形界面开发,通过STM32CubeMX直接配置FreeRTOS和TouchGFX,利用TouchGFX Designer设计界面。 开发平台 硬件平台:STM32F746 Discovery Kit 开发环境:MDK V5.28 工程配置:STM32CubeMX V5.6 界面设计:TouchGFX 4.13 创建工程 芯片选择 打开STM32CubeMX,通过芯片型号选择STM32F746NGHx,开始工程。 System Core配置 选择 RCC 配置晶振:HSE选择 BYPASS Clock Source ,LSE选择 Crystal/Ceramic Resonator ,点击 NVIC Settings 勾选 RCC global interrupt 选择 SYS 配置系统时间:Debug选择 Serial Wire ,开启仿真,SWD接口;Timebase Source选择 TIM6 用于给系统提供时间基准 Connectivity配置 选择 FMC 并展开 SDRAM 1 栏,Clock and chip enable选择 SDCKE0 + SDNE0 ,Internal bank number选择 4 banks ,Address选择 12 bits ,Data选择 16 bits

FreeRTOS学习(一)

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-07 04:08:26
1 FreeRTOS任务基础 1.1 多任务系统 在51单片机、AVR、STM32裸机编程时,我们通常都是用一个main函数里面加一个while(1)做一个大循环来完成所有的事务处理,同时在加上中断处理一些较为紧急的事务。相对于多任务系统而言,这个就是单任务系统,也称作前后台系统,中断服务函数 作为前台程序,大循环while(1)作为后台程序,如图 1.1.1 所示: 图1.1.1 前后台系统 前后台系统的实时性较大(尤其是调度任务较多),每个任务都是轮流执行,没有轮到该任务运行的时候,不管该任务有多么的紧急,就只能等着,大家拥有一样的优先级。但是该类系统简单,所消耗的资源较少。 多任务系统可以将一个大问题分成很多个具有共性的小问题,逐一的将这些小问题解决,进而大问题将得到全面的解决,我们可将每一个小问题都视为一个任务。这些小任务是并发处理的,由于他们的执行时间很短,我们所能感觉到的是所有的任务都是同时进行的。那么多任务运行的问题就来了,这就涉及到任务执行的先后顺序及什么任务该执行不该执行了。该模块的功能将由任务调度器来完成,具体如何实现,各类系统是有很大差别的,通常来说我们可分为抢占式(UCos、FreeRTOS)和非抢占式(Linux)。FreeRTOS是一个支持抢占式的实时操作系统,其任务运行如图1.1.2所示: 图1.1.2 抢占式多任务系统 1.2 FreeRTOS任务

1.3创建互斥量

拜拜、爱过 提交于 2020-07-28 01:37:31
创建互斥量间接使用通用队列创建函数xQueueGenericCreate()。创建互斥量API接口一样是个宏,定义以下: #define xSemaphoreCreateMutex() \ xQueueCreateMutex( queueQUEUE_TYPE_MUTEX, NULL ) 其中,宏queueQUEUE_TYPE_MUTEX用于通用队列创建函数,表示创建队列的类型是互斥量,在文章《 FreeRTOS高级篇5---FreeRTOS队列分析 》关于通用队列创建函数参数说明中提到了这个宏。 我们来看1下函数xQueueCreateMutex()是如何实现的: #if ( configUSE_MUTEXES == 1 ) QueueHandle_t xQueueCreateMutex( const uint8_tucQueueType, StaticQueue_t *pxStaticQueue ) { Queue_t *pxNewQueue; const UBaseType_tuxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; /* 避免编译器产生正告信息 */ ( void ) ucQueueType; /*调用通用队列创建函数*/ pxNewQueue = ( Queue_t *

飞凌iMXRT系列-iMXRT1052经验分享-iMXRT1052产品解决方案合集

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-27 11:32:39
FET1052-C核心板基于 NXP 公司 i.MX RT1052 跨界处理器设计,搭载 ARM Cortex -M7 内核,集微控制器的低功耗、易用性与应用处理器的高性能、高扩展性于一体。主频 528MHz,SRAM 512 KB(TCM),SDRAM 16MB/32MB,QSPI-Nor Flash 4MB/16MB 。工业级核心板,运行温宽 -40℃~85℃;体积小巧仅31*43mm,采用0.8mm间距连接器;引脚数 量160PIN,CPU全功能引出,可配置出124个GPIO;引出UART、Ethernet、USB、CAN 、 PWM、ADC、LCD、CAMERA等丰富外设功能;支持uCLinux、裸机、FreeRTOS、RT-Thread多种系统。 研发课堂丨飞凌iMXRT1052开发板使用IAP在线升级APP的操作方法: https://www.forlinx.com/article_view_418.html 为什么选择i.MXRT1052进行开发设计?: https://www.forlinx.com/article_view_408.html i.MX RT系列外置Flash加密为您的产品安全保驾护航: https://www.forlinx.com/article_view_346.html 基于FET1052-C的四轴飞行器的方案: https://www

使用STM32F405RGT6开发智能电动床控制系统

南笙酒味 提交于 2020-07-27 03:08:25
简介 智能家居是在互联网影响之下物联化的体现。智能家居通过物联网技术将家中的各种设备连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、暖通控制、红外转发以及可编程定时控制等多种功能和手段。 智能电动床属于智能家具产品的一类,反映了当前智能家居领域发展趋势和全新的产品概念。智能床能通过床板调节,可以开启休闲、阅读、观影、止鼾、零重力等模式,以满足用户睡眠、休闲、健康三大核心需求。 智能床对智慧生活的助推作用不容小觑,随着城镇化水平提高和居民可支配收入增长,智能家居在人们家庭中越来越普及,智能床反映了当前智能家居领域发展趋势和全新的产品概念。 本教程使用STM32F405实现智能电动床的控制,基本功能如下: 语音控制模块:LD3320,提供基于 " 关键词语列表 " 的语音识别,可以使用语音命令控制智能电动床进行相关操作,例如床头抬起,床位抬起,还原设备默认设置及指定智能电动床当前模式。 BLE蓝牙:低功耗蓝牙,用来连接蓝牙遥控器及微信小程序,微信小程序提供WIFI配网及本地遥控操作 物联网模块:EMW3080, 提供阿里云物联网平台访问,属性上报,远程状态查看及远程控制等操作 马达控制板:使用SPI协议最多同时控制4个马达,实现正反转控制,可用于双人电动床。 其他:压力传感器(上离床,体征监测),温度传感器及鼾声传感器在本版本并未体现。 项目架构

一周总结——2020.6.28

断了今生、忘了曾经 提交于 2020-07-23 19:58:02
目录标题 前言 1.本周总结 ①硬件部分 ②软件部分 2.下周计划 ①硬件部分 ②软件部分 总结 前言 1.本周总结 ①硬件部分 自学完模电信号转换电路部分,练习使用热风枪焊接。 ②软件部分 FreeRTOS应用层学完,并制作了个基于stm32+FreeRTOS+ESP8266的小型气象站的项目并附带一个时间(通过读取服务器的数据,用cJSON解码,并通过操作系统实时显示)(虽然不是很难,但是坑还是非常的多。。。。比如FreeRTOS和cJSON申请内存的函数冲突,Heap_Size太小导致解码卡死等等。。。。。。)(读取的是最近三天的天气,但由于懒得解码了,就只读了隔天的数据。。。。) 2.下周计划 ①硬件部分 打算再次温故一下前面的内容(打算偷点懒😂,因为着实学着有点头疼了) ②软件部分 Linux基本入门,FreeRTOS基本学完(共25章,已看到20章,还差5章) 总结 深入学习了下stm32,比如利用操作系统同时驱动各种模块,又可以用emWin等进行GUI开发,打算抽空研究一下emWin(移植又是一个大坑😭),不过重心还是打算放在Linux上。 来源: oschina 链接: https://my.oschina.net/u/4258176/blog/4329541

Is there a FreeRTOS howto for Cortex M7 about how to supervise/trace a system with few tasks (what features of kernel to be used)

半城伤御伤魂 提交于 2020-05-16 02:44:10
问题 I'm slowly assembling the picture of how to use FreeRTOS in a real world application. I've read a lot of partial features (stack supervision, memory, malloc etc...). But haven't anywhere found a good instruction, what "supervision" to use to be able to follow the performance of tasks, system also after debugger is not connected anymore... Can anyone help with some pointers, advices? What features do you activate when a FreeRTOS app is designed? How do you supervise, what is going on with