用的是野火的视频,参考书是《FreeRTOS+内核实现与应用开发实战—基于STM32》。

堪称有毒,野火论坛是画图的,野火电子论坛是讲电子的。

插一下嘴,Modelsim仿真看不到子模块内部信号。

FreeRTOS:开源免费。V9.0内核稳定。V10.0,是被亚马逊收购之后发布的,富含收费云组件。

OpenRTOS:收费,但服务好。

SaveRTOS:收费,安全认证。

Keil的C51只要装在和MDK同一个文件夹下,就可以实现一个keil同时开发51和32了。

新建自己的工程文件夹:

41.freeRTOS学习笔记基础篇_长整数

打开keil,新建工程,保存在FreeRTOS-Project文件夹下,选的是M7。注意这两个要勾选。

41.freeRTOS学习笔记基础篇_链表_02

建立文件分组

41.freeRTOS学习笔记基础篇_编译器_03

先新建一个main.c文件,在user文件夹下

编译报错:

.\Objects\Fire_FreeRTOS.axf: Error: L6218E: Undefined symbol main (referred from __rtentry2.o).

原因是c文件没有包含进工程里面。右键添加即可

41.freeRTOS学习笔记基础篇_链表_04

修改仿真时钟,是5Mhz*5=25Mhz

41.freeRTOS学习笔记基础篇_长整数_05

设置使用软件仿真

41.freeRTOS学习笔记基础篇_长整数_06

添加头文件路径

41.freeRTOS学习笔记基础篇_编译器_07

裸机系统分为轮询系统和前后台系统。

中断在这里我们称为前台,main 函数 里面的无限循环我们称为后台

41.freeRTOS学习笔记基础篇_长整数_08

多任务系统。

41.freeRTOS学习笔记基础篇_长整数_09

keil中默认char是无符号的

41.freeRTOS学习笔记基础篇_长整数_10

在函数名中加入了函数所在的文件名

vTaskPrioritySet()函数的返回值为 void型,在 task.c这个文件中定义。 

当两个编译器的 tab 键设置的大小不一样的时候,代码移植的时候代码的格式就会变乱, 而使用空格键则不会出现这种问题

RVDS: ARM提供范围广泛的多种开发工具: RealView开发套件(RVDS):可为ARM架构开发C,C++.

链表:

一般会设置根节点

链表的是把离散的数据连接起来的,数组是一段连续的内存。

41.freeRTOS学习笔记基础篇_编译器_11

TCB:任务控制块

 

链表节点:

41.freeRTOS学习笔记基础篇_链表_12

根节点:

41.freeRTOS学习笔记基础篇_编译器_13

 

将链表索引指针指向最后一个节点。(ListItem_t*)起到类型转换的作用。

pxList->pxIndex=(ListItem_t*)&(pxList->xListEnd);

41.freeRTOS学习笔记基础篇_链表_14

为了强制编译器把常量作为长整数来处理,只需在后边加上一个字母L(或l):

15L 0377L 0x7fffL

为了指明是无符号常量,可以在常量后边加上字母U(或u):

15U 0377U 0x7fffU

L和U可以结合使用,以表明常量既是长整型又是无符号的:0xffffffffUL。(字母L、U的顺序和大小写无所谓。)

iterator:迭代器。例如124中插入3,这段程序中的iterator就是2

最后用仿真看懂程序了。

41.freeRTOS学习笔记基础篇_长整数_15