各位嵌入式软件工程师想必都有类似的经验,使用无操作系统开发单片机时对于时序把控、任务延时及各任务之间的通信很难实现完整地条理清晰地编码。
对于部分经验不足的工程师,总会存在各种各样的问题,如因为变量、参数函数位置以及延时方法等导致程序运行效率过低的情况。实时操作系统能很好地解决这些问题。一般无操作系统的情况下,经验丰富的工程师可能会使用状态机加定时器等实现任务的非阻塞延时,使用软件定时器加回调函数实现简单的定时任务等。
在操作系统中,可以统一使用系统延时rt_thread_mdelay来解决问题,操作方法类似于最开始学习单片机时的delay()函数一样,无需担心任务卡死。在简单的应用中,如果使用多个任务,完全可以不用考虑系统会卡死。当然,该操作系统还有更高级的功能,此处不作赘述。
资料准备
本次移植基于国民的N32G430芯片进行移植,首先需要以下工具:
国民技术
软件:Keil5,笔者使用的是5.27版本
开发板:淘宝随便找一个国民技术的N32G430开发板,
下载国民技术的基础资料包,直接将国民的链接粘贴在文件夹路径框(FTP传输),找到如下文件:
解压后找到,此文件为国民的基本支持包:
下载RTT NANO版本:
建议使用手动下载安装:
下载如下:
安装
Keil安装完成的情况下,分别将RealThread.RT-Thread.3.1.5.pack及Nations.N32G430_DFP.1.1.0.pack双击安装,无需其他设置步骤,软件会自动安装到位。
创建工程
先创建一个demo工程,选择国民的N32G430芯片,确认后软件自动进入组件选择。
组件选择:选中如下的内容;
如果弹出报错,先截个图,稍后手动拷贝,由于安装时firmware并不会安装到位,一般是手动拷贝的,此处手动从国民的SDK中拷贝;
Firmware路径:
按照下图创建目录拷贝即可:
接下来,进入组件管理界面:
在刚在的工程文件夹下找到以下文件:
\Device\N32G430K8L7\CMSIS\device\system_n32g430.c
\Device\N32G430K8L7\CMSIS\device\startup\startup_n32g430.s
\Device\N32G430K8L7\n32g430_std_periph_driver\src\misc.c
\Device\N32G430K8L7\n32g430_std_periph_driver\src\n32g430_rcc.c
\Device\N32G430K8L7\n32g430_std_periph_driver\src\n32g430_gpio.c
双击添加:
选择编译器,此步骤不选没法编译:
之后返回组件选择,仅保留RTT部分,前边选组件只是为了保证后续手动移植时知道选择哪些文件以及从哪里拷贝文件,目标文件在哪里等。
接下来配置工程的包含路径:
添加路径:
接下来进行第一次编译;
出现如下报错,证明文件基本移植完成,接下来可以处理系统对接相关内容。
首先处理系统时钟:
接下来添加main文件,先建立user文件夹,在文件夹下添加main.c文件,并将文件添加至工程。
简单写一个空的main函数,开始编译:
编译完成,仅一个告警,问题不大,可以忽略。
接下来处理系统打印,打开控制台功能:
main任务写个简单的打印,编译:
至此,移植全部完成,接下来下载编译即可,此处不再赘述。
-
单片机
+关注
关注
6032文章
44513浏览量
632694 -
操作系统
+关注
关注
37文章
6727浏览量
123181
发布评论请先 登录
相关推荐
评论