B1课程:首次启动;
开始使用keil打开百分度提供的第1个简单的demo,路径:OceanOS-CM0-资料汇总-251029/ 3.软件源码/ 3.Software1-beginner/
3.Software1-beginner/ 1.OceanOS-CM0-B1
打开如图:

图(一)keil菜单打开工程

图(二)打开第1个demo
另外提示一下keil最基本的这2个功能:
运行:
Keil菜单选项Debug->Start/Stop
Debug Session,运行
烧录:
Keil 要先构建快捷build(或者菜单选项project->Build target),然后菜单选项Flash->Download,即可烧录

图(三)第1个demo的代码1.OceanOS-CM0-B1
大体来看一下这个demo的结构,实际上也是OceanOS的结构,模块清晰,硬件代码不再祼奔,有操作系统更能运用自如。
OceanOS 的目录结构
OceanOS/
| |~arch/
| | |-os_arch.asm
| | |-os_arch.c
| | `-os_arch.h| |~kernel/
| | |-ocean_os.h
| | |-os.h
| | |-os_common.c
| | |-os_config.h
| | |-os_flag.c
| | |-os_mutex.c
| | |-os_queue.c
| | |-os_semaphore.c
| | |-os_task.c
| | |-os_tick.c
| | |-os_type.h
| | |-os_chain.c
其中,arch 目录下的文件,主要实现与 MCU 架构相关的代码,它们依据 MCU 的不同
而实现不同;而 kernel 目录下是 C 语言相关代码,它们不依赖于具体的平台。
下面讲述每个文件实现的功能。
os_arch.h
这个文件声明了平台相关函数,定义了平台相关的类型,以及一些平台相关的宏定义等。
os_arch.asm
这个文件以汇编语言的方式,实现了依赖 MCU 平台的函数;
os_arch.c
这个文件以 C 语言的方式,实现了依赖 MCU 平台的函数;
ocean_os.h
这个文件是 OceanOS 的头文件,也是用户的接口文件,通常用户程序主要参考这个文
件提供的声明;
os_type.h
这个文件是 OceanOS 的类型定义,包括宏定义,类型定义,数据结构定义等;
os.h
这个文件是 OceanOS 实现代码的头文件,所有实现代码都包含此文件,但用户程序不
必包含此文件;
os_config.h
这个文件是 OceanOS 的配置文件,修改它可以简单实现 OceanOS 的不同配置;os_common.c
这个文件以标准 C 的方式,实现了 OceanOS
的一些通用函数;用以代替标准库函数等
调用;
os_task.c
这个文件是 OceanOS 任务处理相关的实现代码;
os_tick.c
这个文件是 OceanOS 时钟节拍处理的实现代码;
os_flag.c
这个文件是 OceanOS 事件标志组的实现代码;
os_mutex.c
这个文件是 OceanOS 互斥锁的实现代码;
os_queue.c
这个文件是 OceanOS 消息队列的实现代码;
os_semaphore.c
这个文件是 OceanOS 信号量的实现代码;
os_chain.c
这个文件是 OceanOS 链式队列的实现代码;本文件是 2020 年 11 月新增;
#include "al_main_task.h"
int main(void)
{
```
__ASM
```
("CPSID I");
```
os_init();
os_task_create(al_main_task,
```
NULL, "main_task",
```
&g_main_task_tcb,
```
g_main_task_stack, AL_MAIN_TASK_STACK_SIZE, 1);
```
os_start();
while
```
(1)
```
{
```
}
}
代码:
以上demo的代码,使用OCeanOS,和上层代码的风格非常像,很容易入手。
os_init();
os_task_create()//创建任务
os_start();
第一个demo展示相当简单,可以自行Debug断点进行慢慢研究。