MS-RTOS 工具类函数

更新时间:
2023-08-09
下载文档

MS-RTOS 工具类函数

本章将介绍 MS-RTOS 工具类函数的使用。

工具类 API

下表展示了工具类函数在两个权限空间下是否可用:

API用户空间内核空间
stdin 标准输入文件
ms_getc
ms_gets
stdout 标准输出文件
ms_putc
ms_puts
ms_printf
字符串
ms_snprintf
ms_strtol
ms_strtoul
ms_strtoull
ms_atoi
ms_atol
字符
ms_isalnum
ms_isalpha
ms_iscntrl
ms_isdigit
ms_isgraph
ms_islower
ms_isprint
ms_ispunct
ms_isspace
ms_isupper
ms_isxdigit
ms_isblank
ms_isascii
ms_toascii
ms_tolower
ms_toupper
CRC
ms_crc32
ms_file_crc32
其它
ms_roundup_pow2_size

stdin 标准输入文件函数

MS-RTOS 提供了以下 stdin 标准输入文件函数,它们的实现比 C 库里的实现要小巧,可有效减少对 ROM 空间的消耗,建议采用以下的函数:

API描述
char ms_getc(void)从标准输入文件读取一个字符
ms_ssize_t ms_gets(char *buf, ms_size_t size)从标准输入文件读取一个字符串

stdout 标准输出文件函数

MS-RTOS 提供了以下 stdout 标准输出文件函数,它们的实现比 C 库里的实现要小巧,可有效减少对 ROM 空间的消耗,建议采用以下的函数:

API描述
void ms_putc(char ch)打印一个字符到标准输出文件
void ms_puts(const char *string)打印一个字符串到标准输出文件
void ms_printf(const char *fmt, ...)打印格式化字符串到标准输出文件(不支持浮点)

字符串函数

MS-RTOS 提供了以下字符串函数,它们的实现比 C 库里的实现要小巧,可有效减少对 ROM 空间的消耗,建议采用以下的函数:

API描述
int ms_snprintf(char *buf, ms_size_t buf_size, const char *fmt,...)打印格式化字符串到缓冲区(不支持浮点)
ms_long_t ms_strtol(const char *cp, char **endp, ms_size_t base)字符串按指定进制转换为有符号长整型
ms_ulong_t ms_strtoul(const char *cp, char **endp, ms_size_t base)字符串按指定进制转换为无符号长整型
ms_ullong_t ms_strtoull(const char *cp, char **endp, ms_size_t base)字符串按指定进制转换为无符号长长整型
int ms_atoi(const char *nptr)将字符转换为整型
ms_long_t ms_atol(const char *nptr)将字符转换为长整型

字符函数

MS-RTOS 也提供了 ctype.h 标准头文件的字符操作、判断函数,它们的实现比 C 库里的实现要小巧,可有效减少对 ROM 空间的消耗,建议采用以下的字符操作、判断函数:

API描述
int ms_isalnum(int c)判断字符是否为字母或者十进制数字
int ms_isalpha(int c)判断字符是否为字母
int ms_iscntrl(int c)判断字符是否为控制字符
int ms_isdigit(int c)判断字符是否为十进制数字
int ms_isgraph(int c)判断字符是否为图形字符
int ms_islower(int c)判断字符是否为小写字母
int ms_isprint(int c)判断字符是否为可打印字符
int ms_ispunct(int c)判断字符是否为标点符号
int ms_isspace(int c)判断字符是否为空白字符
int ms_isupper(int c)判断字符是否为大写字母
int ms_isxdigit(int c)判断字符是否为十六进制数字
int ms_isblank(int c)判断字符是否为空白符
int ms_isascii(int c)判断字符是否为 ASCII 字符
int ms_toascii(int c)将字符转换为 ASCII 字符
int ms_tolower(int c)将小写字母转换为大写字母
int ms_toupper(int c)将大写字母转换为小写字母

ms_crc32()

  • 描述 计算数据的 CRC32

  • 函数原型

ms_uint32_t ms_crc32(ms_uint32_t crc, ms_const_ptr_t buf, ms_size_t size);
  • 参数
输入/输出参数描述
[in]crcCRC32 初始值
[in]buf数据
[in]size数据的大小
  • 返回值 数据的 CRC32

  • 注意事项

  • 示例

int main(int argc, char *argv[])
{
    char data[128];
    ms_uint32_t crc;

    // do some thing

    crc = ms_crc32(0U, data, sizeof(data));

    // do some thing

    return 0;
}

ms_file_crc32()

  • 描述 计算指定文件的 CRC32

  • 函数原型

ms_err_t ms_file_crc32(const char *path, ms_uint32_t *crc);
  • 参数
输入/输出参数描述
[in]path文件路径
[out]crc文件的 CRC32
  • 返回值 MS-RTOS 内核错误码

  • 注意事项

  • 示例

int main(int argc, char *argv[])
{
    ms_uint32_t crc;

    // do some thing

    ms_file_crc32("/nor/aaa.bin", &crc);

    // do some thing

    return 0;
}

ms_roundup_pow2_size()

  • 描述 向上圆整到 2 的次方大小

  • 函数原型

ms_uint32_t ms_roundup_pow2_size(ms_uint32_t size);
  • 参数
输入/输出参数描述
[in]size大小
  • 返回值 输入参数向上圆整到 2 的次方后的值

  • 注意事项

  • 示例

int main(int argc, char *argv[])
{
    ms_uint32_t size;

    // do some thing

    size = ms_roundup_pow2_size(100);

    // do some thing

    return 0;
}
文档内容是否对您有所帮助?
有帮助
没帮助