# JxOS
#### Description
面向MCU的小型前后台系统,提供消息、事件等服务,以及软件定时器,低功耗管理,按键,led等常用功能模块。在此基础上实现了基于433的简单无线网络功能。此项目的设计思想是:功能模块与硬件高度解耦,提高代码模块的可复用性;不使用复杂的数据结构和语法以提高不同硬件平台和编译器之间的兼容性,实现工程在不同MCU之间的快速移植;提供实用稳定常用的功能模块,实现项目的快速开发;定义标准应用开发框架,减轻应用开发的工作量和难度。已使用此系统用于开发项目的硬件平台有:N76E003、STM8S103K、PC、KF8TS2716
#### Software Architecture
![输入图片说明](jxos/JXOS.jpg)
![输入图片说明](fun_module_demo/module_interface.jpg)
```shell
JxOS
├───demo_code 参考代码,未整理代码
│
├───jxos jxos
│ ├───bsp 过时分类,将逐步归类到 driver 和 lib 中
│ ├───kernel 内核,提供系统内核功能:任务、事件、消息、公告板、邮箱、管道、注册、内存分配……
│ ├───driver 使用 静态 初始化的功能代码模块,使用config.h文件进行配置;此目录下的代码大部分与硬件相关,如:传感器、按键扫描、屏幕…… (driver 与 lib 有时并没有清晰的界限,如driver:led_blink 就有可能抽象成 lib:sw_pwm)
│ ├───lib 使用 动态 初始化的功能代码模块,使用初始化函数进行配置;此目录下的模代码大部分与硬件无关,如:环形缓冲区、crc16、栈、软件定时器……
│ ├───sys_service 基于任务实现的系统服务,如:低功耗管理、软件定时器、打印输出……(只有对外接口,不发出对外消息)
│ └───std_app 基于任务实现的常用标准应用,如独立按键扫描、按键多次点击、指示灯闪烁……(此类模块和user app属于同一级别,只不过已经标准化;此类模块发出对外消息,也有对外接口,用于兼容不能支持消息功能的硬件平台)
│
├───platform
│ ├───N76E003 ┐
│ ├───N76E003 ├─── 基于 jxos 实现的,使用不同平台硬件的具体项目
│ └───STM8S103K3 ┘
│
├───JSnet ┐
├───.... ├─── 基于 jxos 实现的功能模块
└───SRTnet ┘
```
1. kernel 提供系统内核功能:任务、事件、消息、公告板、邮箱、管道、注册、内存分配……
2. driver 使用 静态 初始化的功能代码模块,使用config.h文件进行配置;此目录下的代码大部分与硬件相关,如:传感器、按键扫描、屏幕…… (driver 与 lib 有时并没有清晰的界限,如driver:led_blink 就有可能抽象成 lib:sw_pwm)
3. lib 使用 动态 初始化的功能代码模块,使用初始化函数进行配置;此目录下的模代码大部分与硬件无关,如:环形缓冲区、crc16、栈、软件定时器……
4. sys_service 基于任务实现的系统服务,如:低功耗管理、软件定时器、打印输出……(只有对外接口,不发出对外消息)
5. std_app 基于任务实现的常用标准应用,如独立按键扫描、按键多次点击、指示灯闪烁…… (此类模块和user app属于同一级别,只不过已经标准化;此类模块发出对外消息,也有对外接口,用于兼容不能支持消息功能的硬件平台)
6. platform 基于 jxos 实现的,使用不同平台硬件的具体项目
7. 在某些编译器环境下可能出现以某些限制(不支持函数指针,不支持中断处理函数中调用其他函数,不支持函数指针带参数,不支持结构体),因此 std_app 提供的消息可能无法使用,作为补充std_app 也会同时提供全局变量来传出信息和函数接口来传入信息
8. 为提高代码的兼容性;尽量不要使用函数指针
9. 为提高代码的可复用性,std_app 中的功能尽量在 driver 和 lib 中实现,std_app 中的代码仅作为提供系统tick和统一对外接口的功能
10. 模块和 std_app 可以提供多个不同实现方法的文件,但保持对外接口的统一
11. 对外提供两套接口方案 jxos_public.h 提供高级接口(消息 事件等),jxos_public_lite.h 提供低级接口(全局变量, 函数)
#### Installation
#### Instructions
1. 导入 jxos_public.h 即可调用系统所有的对外接口
2. 每个项目通过 jxos_init_config.c 和 jxos_config.h 对系统进行配置,即每个项目有独立配置文件
3. 在 jxos_init_config.c 实现需要硬件支持的系统模块硬件初始化,以及用户任务的初始化顺序
4. 在 jxos_config.h 配置系统模块的参数和使能
5. event 用于任务内部的信号同步,主要是将中断信号传递到任务
6. msg 用于任务之间的消息传递,使用 jxos_msg_get_handle 可通过消息名(字符串)获取消息句柄
```shell
如何建立新项目:
获取 Jxos 所有文件和目录结构
在 \platform 目录下建立当前工程的目录(platform\芯片型号\工程命名\)
在 \工程名称 目录下新建工程文件(keil、iar 等IDE的newproject)
在 \工程名称 目录下新建 \config 目录,增加 jxos_config.h type.h 系统配置文件
在 \config 目录下增加工程用到的功能模块的配置文件 (如 button_config.h sim_timer_config.h ...)
在 \工程名称 目录下新建 \framework 目录
在 \framework 目录下增加 main.c ,实现main函数,在main函数中调用jxos_run() ( void main(void) {jxos_run();} )
在 \framework 目录下增加 isr.c ,实现工程需要的中断处理函数
在 \framework 目录下增加 callback_handler.c ,实现工程用到的功能模块的callback函数
建议在 \工程名称 目录下新建 \app 目录,实现用户功能任务
建议在 \芯片型号 目录下增加芯片需要用到的库文件目录
在IDE的新工程中导入 jxos.c
在IDE的新工程中导入需要的Jxos模块的文件(kernel、sys_service ...)
在IDE的新工程中导入 main.c, isr.c, callback_handler.c
在IDE的新工程中导入用户任务文件 (\工程名称\app\)
在IDE的新工程中增加include目录,包括:\joxs,\platform\芯片型号\工程命名\config
在IDE的新工程中增加其他的include目录,如芯片库文件的头文件
按照框架实现用户任务
如何配置与使用 kernel
如何配置与使用 sys_service
如何配置与使用 std_app
如何使用标准框架的 driver 模块
如何使用标准框架的 lib 模块
```
#### Contribution
1. Fork the project
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
面向MCU的小型前后台系统,提供消息、事件等服务,以及软件定时器,低功耗管理,按键,led等常用功能模块。在此基础上实现了基于433的简单无线网络功能。此项目的设计思想是:功能模块与硬件高度解耦,提高代码模块的可复用性;不使用复杂的数据结构和语法以提高不同硬件平台和编译器之间的兼容性,实现工程在不同MCU之间的快速移植;提供实用稳定常用的功能模块,实现项目的快速开发;定义标准应用开发框架,减轻应用开发的工作量和难度。
资源推荐
资源详情
资源评论
收起资源包目录
面向MCU的小型前后台系统设计与实现+硬件平台 (790个子文件)
STARTUP.A51 6KB
STARTUP_N76E003beta.A51 6KB
STARTUP.A51 5KB
GPIO.uvgui.Administrator 144KB
GPIO.uvgui.Administrator 144KB
GPIO.uvgui.Administrator 144KB
GPIO.uvgui.Administrator 143KB
GPIO.uvgui.Administrator 137KB
Phototherapy_MLS_mini.uvgui.Administrator 76KB
UV_light.uvgui.Administrator 72KB
Phototherapy_US.uvgui.Administrator 72KB
GPIO.uvgui.Administrator 69KB
main.asm 2KB
mapping.asm 898B
sc92f_pwm.c 55KB
stm8s_tim2.c 46KB
sprintf.c 25KB
stm8s_uart1.c 25KB
stm8s_clk.c 22KB
dlk_primitives.c 21KB
CC1101.c 20KB
hal.c 20KB
state_user.c 20KB
ring_buff.c 19KB
hts221.c 18KB
link_control.c 18KB
cc1101.c 17KB
sc92f_adc.c 16KB
sc92f_usci0.c 14KB
sc92f_usci1.c 14KB
sc92f_usci2.c 14KB
stm8s_spi.c 14KB
sc92f_timer2.c 14KB
stm8s_it.c 13KB
jxos_bulletin_board.c 13KB
sc92f_gpio.c 12KB
TKDriver.C 12KB
TKDriver.C 12KB
stm8s_tim4.c 12KB
application_layer_service.c 12KB
humidity-temperature-si7021.c 11KB
flash.c 11KB
sc92f_ssi.c 11KB
compiler_test.c 11KB
hal.c 10KB
stts751.c 10KB
dlk_send_receive.c 10KB
sc92f_ssi1.c 10KB
sc92f_ssi0.c 10KB
sc92f_uart0.c 10KB
dlk_cmd.c 9KB
e93196.c 9KB
data_list.c 9KB
attribute_event_handler.c 9KB
state.c 8KB
dlk_parameter.c 8KB
data_pool_named.c 8KB
stm8s_gpio.c 8KB
ppm_decode.c 8KB
receiver.c 8KB
main.c 8KB
bsp_ir_sender_optimize.c 8KB
frame_send_task.c 8KB
onoff_light.c 7KB
sc92f_timer0.c 7KB
date.c 7KB
phy_task.c 7KB
bsp_ir_receiver.c 7KB
lib.c 7KB
sc92f_ddic.c 7KB
jxos_message_pipe.c 7KB
复件 onoff_light.c 7KB
bsp_rf_receive_driver.c 7KB
sc92f_timer3.c 7KB
iic_task.c 7KB
printf.c 7KB
sc92f_timer4.c 7KB
callback_handler.c 7KB
intel_hex.c 6KB
service_binding.c 6KB
pc_com.c 6KB
mod_light_BH1750.c 6KB
sw_pwm.c 6KB
onoff_light.c 6KB
net_control.c 6KB
bh1750_bh1721.c 6KB
sc92f_int.c 6KB
sim_i2c.c 6KB
sc92f_timer1.c 6KB
spi_task.c 6KB
soft_io_spi.c 6KB
soft_io_spi.c 6KB
application_layer_binding_table.c 6KB
rf_dongle.c 6KB
bsp_rf_send_driver.c 6KB
attribute_event_handler.c 6KB
muc_to_zigbee_app.c 6KB
main.c 6KB
bsp_async_comm.c 6KB
st7567.c 6KB
共 790 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
创作小达人
- 粉丝: 2105
- 资源: 509
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功