当前位置: 首页 > news >正文

单片机第五季-第八课:STM32CubeMx和FreeRTOS

1,FreeRTOS背景介绍

RTOS简介:

实时操作系统,本用于追求实时性的嵌入式系统,典型:ucos/uclinux/vxworks;

特点:中断响应快、一般可嵌套中断、使用实地址、多任务;

(实地址:)

近年来趋势:由RTOS向IoTOS转型,典型:FreeRTOS/LiteOS/rt-thread;

(IoTOS:主要与物联网相关,涉及到各种通讯协议等)

FreeRTOS简介:

以前是第三方免费rtos,后被Amazon收购;

官网地址:

FreeRTOS官网地址

RTOS学习主要学什么?

(1)RTOS的应用开发,核心是任务创建、IPC、内存管理等;

(2)RTOS的内核开发,核心是kernel部分源码解析和port部分硬件相关;

(3)IoT开发,核心是IoTOS提供的组件和资源使用;

 2,FreeRTOS源码分析

目录结构:

创建SourceInsight工程,删除无关文件,主要保留Demo和Source文件夹:

 task.c文件中主要是任务的创建、删除、优先级设置等函数:

 TCB(task control block):

task的本质是一个函数。

内核的几个链表:

通过链表对源码进行分析。

任务创建函数:

 任务删除函数:

3,FreeRTOS的配置 

配置文件:

FreeRTOSConfig.h  开发者设置的配置文件;

FreeRTOS.h   源码中的配置文件;

开启任务调度:

demo的main.c文件的主函数中

空任务的创建和调度:

Idle task中是一个死循环 for( ; ; ) 

注意:该函数是宏定义的形式。

4,STM32CubeMAX移植FreeRTOS 

暂未完成;

(理解:看完相关视频,对RTOS有了初步的理解,其与裸机的主要区别,例如,裸机中如果要使LED闪烁,需要在while循环中点亮LED和熄灭LED之间设定一个延时,程序运行到延时是在原地打转,而RTOS中的延时是切换到了其他任务中,程序不是在原地空转)。

http://www.lryc.cn/news/376894.html

相关文章:

  • 【Linux】进程控制1——进程创建和进程终止
  • 计算机图形学入门16:曲线
  • 【Ruby基础01】windows和termux中搭建Ruby开发环境
  • 2406c++,iguana动态反射
  • 干货分享——AB站帮你解决独立站收款难题
  • C++继承与派生
  • Survival Animations
  • Cargo 教程
  • linux中“PXE高效批量装机”
  • emm, ComfyUI的作者从Stability.AI离职了
  • Redis-五种数据结构之列表(ziplist、quicklist)
  • 记一次全设备通杀未授权RCE的挖掘经历
  • 【数据库编程-SQLite3(一)】sqlite3数据库在Windows下的配置及测试
  • YOLOv10改进 | 主干篇 | YOLOv10引入华为VanillaNet替换Backbone
  • C++ 迷宫问题
  • 【Linux】Linux文件系统中主要文件夹列举_作用说明
  • 移植案例与原理 - HDF驱动框架-驱动配置(1)
  • 坚持刷题|反转链表
  • 升级和维护老旧LabVIEW程序
  • sqlite数据库整体迁移进mysql整个流程并解决中文异常问题
  • Hadoop3:MapReduce中的Partition原理及自定义Partition
  • 就因为没在大屏项目加全屏按钮,早上在地铁挨了领导一顿骂
  • STM32学习记录(八)————定时器输出PWM及舵机的控制
  • Vue CLI,Vue Router,Vuex
  • 互联网广告相关概念
  • 如何在服务器上部署一个java程序
  • 白酒:中国的酒文化的传承与发扬
  • 算法金 | 再见!!!梯度下降(多图)
  • python Django安装及怎么检测是否安装成功
  • Swift开发——存储属性与计算属性