uC/Modbus 用户手册——第二节 目录与文件

目录

2.00 目录与文件

​​​​​​​2.01 目录与文件,独立于目标的源文件

​​​​​​​2.02 目录与文件,RTOS接口

​​​​​​​2.03 目录与文件,产品专用文件

​​​​​​​2.04 目录和文件,CPU与编译特定的文件


2.00 ​​​​​​​目录与文件

可以在以下目录中找到uC/Modbus的代码。

​​​​​​​2.01 目录与文件,独立于目标的源文件

\Micrium\Software\uC-Modbus\Source

该目录包含UART,OS以及与CPU无关的源代码。目录中包含如下文件:

mb.c        与Master/Slave 无关的代码

mb.h

mb_def.h    Modbus 定义

mb_util.c   ASCII 转换程序

mbs_core.c  Slave 专用代码

mbm_core.c  Master 专用代码

​​​​​​​2.02 目录与文件,RTOS接口

\Micrium\Software\uC-Modbus\OS\uCOS-II

\Micrium\Software\uC-Modbus\OS\uCOS-III

    这些目录包含uC/OS-II和uC/OS-III RTOS的接口代码,包含如下文件:

    mb_os.c (详见 7.00)

如果需要将uC/Modbus接入不同的RTOS,您需要将mb_os.c文件放入到单独的目录。也就是所有的RTOS接口文件都应该命名为mb_os.c,但是您使用的实际RTOS的细节将被放在不同的目录中。当创建产品时,您只需要选择一个RTOS接口——一个特定于您的RTOS。

\Micrium\Software\uC-Modbus\OS\None

该目录包含uC/Modbus-S的代码,工作在单线程,不使用RTOS。

mb_os.c (详见 8.00)

mb_os.h (详见 8.00)

​​​​​​​2.03 目录与文件,产品专用文件

???\Product

该目录包含您的应用代码。需要提供以下文件:

mb_cfg.h  (详见 4.00)

mb_data.c (详见 5.00)

mb_bsp.c  (详见 6.00)

​​​​​​​2.04 目录和文件,CPU与编译特定的文件

\Micrium\Software\uC-CPU\<CPU-type>\<compiler>

该目录包含CPU与所用编译器的信息。需要指定的三个文件:

cpu.h

cpu_a.asm

最好是“修改”现有文件,而不是从头开始创建新文件,保证不会遗漏任何内容。uC/Modbus提供了这些文件的示例。

cpu.h

该文件定义了CPU/编译器特定的数据类型。如下示例代码的数据类型被uC/Modbus使用,使用ARM CPU,编译器为IAR Embedded Workbench。

typedef          void    CPU_VOID;

typedef unsigned char    CPU_CHAR;

typedef unsigned char    CPU_BOOLEAN;

typedef unsigned char    CPU_INT08U;

typedef   signed char    CPU_INT08S;

typedef unsigned short   CPU_INT16U;

typedef   signed short   CPU_INT16S;

typedef unsigned int     CPU_INT32U;

typedef   signed int     CPU_INT32S;

typedef          float   CPU_FP32;

typedef          double  CPU_FP64;

typedef          void  (*CPU_FNCT_PTR)(void *);

您还需要指定要使用的“对齐”类型以及处理器的“字节顺序”:

#define CPU_CFG_ALIGN_TYPE     CPU_ALIGN_TYPE_32

#define CPU_CFG_ENDIAN_TYPE    CPU_ENDIAN_TYPE_LITTLE

还需要定义代码来禁止或使能中断。事实上,禁用中断的代码应该先“保存”中断启用设置的状态,然后再禁用中断。这是由一个名为CPU_SR_Save()的汇编语言函数来完成的。代码要重新使能中断,只需要恢复CPU_SR_Save()保存的状态即可。由一个名为CPU_SR_Restore()的函数实现。中断启用设置的状态存储在CPU_SR类型的局部变量中,如下所示。

typedef CPU_INT32U CPU_SR;

#define CPU_CRITICAL_ENTER() {cpu_sr = CPU_SR_Save();}

#define CPU_CRITICAL_EXIT()  {CPU_SR_Restore(cpu_sr);}

您需要注意,uC/Modbus实际上使用CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXITCPU_CRITICAL_ENTER()分别禁用和重新启用中断。

cpu_a.asm

该文件包含CPU_SR_Save()与CPU_SR_Restore()的代码。这个代码通常是用汇编语言编写的,因为它通常访问那些不能从C语言中访问的CPU寄存器。当然,如果您的编译器允许通过C语言操作CPU寄存器,您可以直接用C语实现CPU_SR_Save()和CPU_SR_Restore(),并将这个文件命名为cpu.c,而不是cpu_a.asm。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值