ucosii情景完全分析 之 uC-LIB分析

uC-CPU文件夹内容

  • lib_def.h :主要是bool 宏定义、位操作宏定义、时钟节怕宏定义等
  • lib_mem.h :主要是lib_mem错误码定义、内存类型(堆内存、内存池)宏定义,内存池结构定义,然后是跟大小端有关的不同字长数据读取、写入、复制宏定义,最后是一些函数声明和配置红出错预处理
    • lib_str.h :一些字符串操作相关的函数声明,功能其实与C标准库一样,可能是代码量更少吧,可以参考参考
  • lib_str.c :一些字符串操作相关的函数定义。
  • lib_mem.c :一些内存池操作相关的函数定义。
  • lib_mem_a.asm :用汇编实现了Mem_Copy函数,效率相对于C来说高了不少

lib_def.h分析

  • 首先是一系列BOOL宏定义
#define  DEF_DISABLED                                      0
#define  DEF_ENABLED                                       1

#define  DEF_FALSE                                         0
#define  DEF_TRUE                                          1

#define  DEF_NO                                            0
#define  DEF_YES                                           1

#define  DEF_OFF                                           0
#define  DEF_ON                                            1
  • 然后是位操作的一些宏定义
#define  DEF_BIT_NONE                                   0x00

#define  DEF_BIT_00                                     0x01
#define  DEF_BIT_01                                     0x02
#define  DEF_BIT_02                                     0x04
#define  DEF_BIT_03                                     0x08
#define  DEF_BIT_04                                     0x10
#define  DEF_BIT_05                                     0x20
#define  DEF_BIT_06                                     0x40
#define  DEF_BIT_07                                     0x80

#define  DEF_BIT_08                                   0x0100
#define  DEF_BIT_09                                   0x0200
#define  DEF_BIT_10                                   0x0400
#define  DEF_BIT_11                                   0x0800
#define  DEF_BIT_12                                   0x1000
#define  DEF_BIT_13                                   0x2000
#define  DEF_BIT_14                                   0x4000
#define  DEF_BIT_15                                   0x8000

#define  DEF_BIT_16                               0x00010000
#define  DEF_BIT_17                               0x00020000
#define  DEF_BIT_18                               0x00040000
#define  DEF_BIT_19                               0x00080000
#define  DEF_BIT_20                               0x00100000
#define  DEF_BIT_21                               0x00200000
#define  DEF_BIT_22                               0x00400000
#define  DEF_BIT_23                               0x00800000

#define  DEF_BIT_24                               0x01000000
#define  DEF_BIT_25                               0x02000000
#define  DEF_BIT_26                               0x04000000
#define  DEF_BIT_27                               0x08000000
#define  DEF_BIT_28                               0x10000000
#define  DEF_BIT_29                               0x20000000
#define  DEF_BIT_30                               0x40000000
#define  DEF_BIT_31                               0x80000000

如果我想清零temp的16位 可以

temp &= ~DEF_BIT_16; //很直观
temp &= ~(1 << 16);

  • 然后是一些数据类型最大值的宏定义等
#define  DEF_INT_08_NBR_BITS                               8
#define  DEF_INT_08_MASK                                0xFF

#define  DEF_INT_08U_MIN_VAL                               0u
#define  DEF_INT_08U_MAX_VAL                             255u

#define  DEF_INT_08S_MIN_VAL                            -128
#define  DEF_INT_08S_MAX_VAL                             127

#define  DEF_INT_08S_MIN_VAL_ONES_CPL                   -127
#define  DEF_INT_08S_MAX_VAL_ONES_CPL                    127


#define  DEF_INT_16_NBR_BITS                              16
#define  DEF_INT_16_MASK                              0xFFFF
  • 然后是跟Tick有关的一些宏定义
 /* ------------------- TIME DEFINES ------------------- */
#define  DEF_TIME_NBR_HR_PER_DAY      24uL  /*一天24h*/

#define  DEF_TIME_NBR_MIN_PER_HR      60uL  /*1h60min*/
#define  DEF_TIME_NBR_MIN_PER_DAY     (DEF_TIME_NBR_MIN_PER_HR  * DEF_TIME_NBR_HR_PER_DAY)

#define  DEF_TIME_NBR_SEC_PER_MIN      60uL
#define  DEF_TIME_NBR_SEC_PER_HR       (DEF_TIME_NBR_SEC_PER_MIN 
* DEF_TIME_NBR_MIN_PER_HR)
#define  DEF_TIME_NBR_SEC_PER_DAY      (DEF_TIME_NBR_SEC_PER_HR  * DEF_TIME_NBR_HR_PER_DAY)

#define  DEF_TIME_NBR_mS_PER_SEC       1000uL
#define  DEF_TIME_NBR_uS_PER_SEC       1000000uL
#define  DEF_TIME_NBR_nS_PER_SEC       1000000000uL
  • 然后是位操作相关的一些宏定义
#define  DEF_BIT_CLR(val, mask)       { (val) &= ~(mask); }  //将val 的 mask清零

lib_mem.h分析

  • +
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值