RT-Thread 内核实现与应用开发实战指南 (8):新建 RT-Thread 工程——软件仿真 1.4

阅读数:1 2020 年 1 月 11 日 17:23

RT-Thread内核实现与应用开发实战指南(8):新建RT-Thread工程——软件仿真 1.4

(在 KEIL 工程中添加文件)

内容简介
本书基于野火 STM32 全系列开发板介绍 RTThread 内核实现与应用开发,全书分为两部分:部分教你如何从 0 到 1 把 RTThread 内核写出来,从底层的汇编开始讲解线程如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现定时器以及时间片等 RTThread 的核心知识点;第二部分则讲解 RTThread 内核组件的应用以及如何使用 RTThread 进行多线程编程。
本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域科技工作者的参考书, 也适合相关专业学生学习参考。

在工程中添加好组之后,需要把本地工程中创建好的文件添加到工程里面。具体操作为把 readm.txt 文件添加到 doc 组,把 main.c 文件添加到 user 组,至于 RT-Thread 相关的文件目前还没有编写,那么 RT-Thread 相关的组暂时为空,如图 1-8 所示。

RT-Thread内核实现与应用开发实战指南(8):新建RT-Thread工程——软件仿真 1.4

图 1-8 向组中添加文件

对于初学者,有一个问题是如何将本地工程中的文件添加到工程组中。具体的方法为双击相应的组,在弹出的文件对话框中找到要添加的文件,默认的文件类型是 C 文件。如果要添加的是文本或者汇编文件,那么此时将看不到这类文件,这时就需要将“文件类型”设置为 All files,最后单击 Add 按钮即可,如图 1-9 所示。

RT-Thread内核实现与应用开发实战指南(8):新建RT-Thread工程——软件仿真 1.4

图 1-9 向组中添加文件的方法

下面编写 main() 函数。

一个工程中如果没有 main() 函数是无法编译成功的,因为系统在开始执行时先执行启动文件里面的复位程序,复位程序中会调用 C 库函数 __main,__main 的作用是初始化系统变量,如全局变量,以及只读的、可读可写的变量等。__main 最后会调用 __rtentry,再由 __rtentry 调用 main() 函数,从而由汇编跳入 C 的世界,这里的 main() 函数就需要我们手动编写,如果没有编写 main() 函数,就会出现 main() 函数未定义的错误,如图 1-10 所示。

RT-Thread内核实现与应用开发实战指南(8):新建RT-Thread工程——软件仿真 1.4

图 1-10 未定义 main() 函数的错误

main() 函数写在 main.c 文件中,因为是刚刚新建的工程,所以 main() 函数暂时为空,具体参见代码清单 1-1。

代码清单 1-1 main() 函数
复制代码
1 /*
2 ************************************************************************
3 * main() 函数
4 ************************************************************************
5 */
6 int main(void)
7 {
8 for (;;)
9 {
10 /* 无操作 */
11 }
12 }

RT-Thread内核实现与应用开发实战指南(8):新建RT-Thread工程——软件仿真 1.4

购书地址 https://item.jd.com/12510954.html?dist=jd

评论

发布