用的是野火的视频,参考书是《FreeRTOS+内核实现与应用會員註冊实战—基于STM32》。
堪称有毒,野火论坛是画图的,野火电子论坛是讲电子的。
插一下嘴,Modelsim仿真看不到子模块内部信号。
FreeRTOS:体育开源免费。V9.0内核稳定。V10.0,是被亚马逊收购之后发布的,富含收费云组件。
OpenRTOS:收费,但服务好。
SaveRTOS:收费,安全认证。
Keil的C51只要装在和MDK同一个文件夹下,就可以实现一个keil同时會員註冊51和32了。
新建自己的工程文件夹:
打开keil,新建工程,保存在FreeRTOS-Project文件夹下,选的是M7。注意这两个要勾选。
建立文件分组
先新建一个main.c文件,在user文件夹下
编译报错:
.\Objects\Fire_FreeRTOS.axf: Error: L6218E: Undefined symbol main (referred from __rtentry2.o).
原因是c文件没有包含进工程里面。右键添加即可
修改仿真时钟,是5Mhz*5=25Mhz
设置使用软件仿真
添加头文件路径
裸机官方分为轮询官方和前后台官方。
中断在这里我们称为前台,main 函数 里面的无限循环我们称为后台
多任务官方。
keil中默认char是无符号的
在函数名中加入了函数所在的文件名
vTaskPrioritySet()函数的返回值为 void型,在 task.c这个文件中定义。
当两个编译器的 tab 键设置的大小不一样的时候,BOB官方移植的时候BOB官方的格式就会变乱, 而使用空格键则不会出现这种问题
RVDS: ARM提供范围广泛的多种會員註冊工具: RealView會員註冊套件(RVDS):可为ARM架构會員註冊C,C++.
链表:
一般会设置根节点
链表的是把离散的数据连接起来的,数组是一段连续的内存。
TCB:任务控制块
链表节点:
根节点:
将链表索引指针指向最后一个节点。(ListItem_t*)起到类型转换的作用。
pxList->pxIndex=(ListItem_t*)&(pxList->xListEnd);
为了强制编译器把常量作为长整数来处理,只需在后边加上一个字母L(或l):
15L 0377L 0x7fffL
为了指明是无符号常量,可以在常量后边加上字母U(或u):
15U 0377U 0x7fffU
L和U可以结合使用,以表明常量既是长整型又是无符号的:0xffffffffUL。(字母L、U的顺序和大小写无所谓。)
iterator:迭代器。例如124中插入3,这段BOB体育中的iterator就是2
最后用仿真看懂BOB体育了。