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] | crc | CRC32 初始值 |
[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;
}