LAOXU 发表于 2024-3-24 12:10:43

tzz1983 发表于 2024-3-24 10:04
关于库函数个人的一些感想:
    经常在书本上看到表达这样一个意思:合理的利用库函数,不但可以提高效率 ...

我自已用, 怎么方便随意使, 都没问题, 推荐给大家的, 除了提供外挂标准库, 还提供源代码, 用以直接替代标准库函数,

你想用就在项目中加入外挂标准库或源代码, 自动替代原标准库.

不想用就直接删除 外挂标准库或源代码, keil 找不到 外挂标准库或源代码, 就会自动搜寻内部 标准库使用.

用户选择用与不用, 在于用户 是否 在项目中 外挂标准库或源代码, 很简单的。

杨为民 发表于 2024-3-24 12:17:32

tzz1983 发表于 2024-3-24 08:34
问:关了中断EA, OS就不能工作了.
答:目前本坛三个常见的RTOS"FreeRTOS, uCOS, CosyOS" 都依赖中断切换 ...



你好,我新开了一个贴来回答这个问题,你这楼的意见我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的3楼了。请前往观看,谢谢

杨为民 发表于 2024-3-24 12:18:34

fanxsp 发表于 2024-3-24 09:14
确实如此,我个人理解,不用太纠结于是否关中断这样的问题,该关还得关。其实是否关中断不是本质,问题的 ...


你好,我新开了一个贴来回答这个问题,你这楼的意见我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的4楼了。请前往观看,谢谢

杨为民 发表于 2024-3-24 12:21:09

LAOXU 发表于 2024-3-24 03:35
本水贴, 没一点技术含量, 讨论了 N天, 得出一个傻子都会的结论, 使用万金油 关中断.

我是没本事给 X老师 ...


你好,我新开了一个贴来回答你的这个问题,你在这楼出的题目我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的1楼了。请前往观看,谢谢

杨为民 发表于 2024-3-24 12:21:39

LAOXU 发表于 2024-3-24 09:34
你把我的意思理解错啦~~~

要让你们 OS大虾出马, 当然要有点难度的.



你好,我新开了一个贴来回答你的这个问题,你在这楼出的题目我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的1楼了。请前往观看,谢谢

杨为民 发表于 2024-3-24 12:40:57

LAOXU 发表于 2024-3-24 03:35
本水贴, 没一点技术含量, 讨论了 N天, 得出一个傻子都会的结论, 使用万金油 关中断.

我是没本事给 X老师 ...

LAOXU,你好,你在这楼出的题目我已经解决了,我的答案已经放在
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的2楼了。请你前往进行评判,看我的答案是否及格?谢谢。

=================================================
LAOXU出的“有些难度的题”其实是我早就解决的问题,结果见我2023年10月4日的帖子:
《挑战者x51(3):不使用任何中断的uC/OS-II移植版》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4506)
帖子的简介如下:
一、梦想照亮现实(1)有个人说:“我有一个梦”,然后那个梦就实现了。有个网友有个理想:
对于单片机应用中断是最重要的实时响应技术手段。我理解他理想的RTOS系统是:如果一个硬件中断的条件成立,就应该让该中断立刻发生,实现实时响应。具体地说,对于STC32G单片机,理想的RTOS系统在任何时候都不应该关闭总中断(EA=0),哪怕关闭的极短的时间也不行,因为这个极短的关闭总中断的时间就成了限制RTOS系统的实时响应时间的上限。(2)根据前文介绍的中断外任务切换方法,笔者认为V1.20版本的“挑战者x51 uC/OS-II移植版”已经实现了这个理想。二、不使用任何中断的uC/OS-II移植版(3)在前文范例的基础上,笔者删去了挑战者x51 V1.10版本中的与中断有关的程序,形成了V1.20版本,形成了本文的范例。




CosyOS 发表于 2024-3-24 12:54:30

本帖最后由 CosyOS 于 2024-3-24 13:41 编辑

其实,善用标准库函数,在一定程度上是可以取得良好的效果的。
针对本次的题目,我给出的方法可以称之为“库函数替换法”,把一些不可重入的库函数替换为其它可重入的库函数,实现相同的功能。
不仅是strncpy,还有一些其它的不可重入库函数都可采用该方法。

示例:
strncpy( s1, s2, n )   <==>   memcpy( s1, s2, n )
strncat ( s1, s2, n )   <==>   memcpy( s1 + strlen(s1), s2, n )
strcat   ( s1, s2 )       <==>   strcpy    ( s1 + strlen(s1), s2 )

然而,“替换法”不是万能的,只是在恰当的时候可以应用。
另外,strncpy、strncat,在应用时都需考虑是否要追加字符串尾'\0',因为不同厂家或版本的库函数不一定会不会自动加'\0'。


杨为民 发表于 2024-3-24 13:17:39

CosyOS 发表于 2024-3-24 12:54
其实,善用标准库函数,在一定程度上是可以取得良好的效果的。
针对本次的题目,我给出的方法可以称之为“ ...


赞同。
对于实际程序员,编的程序不是用来说服和教育别人的,捡自己掌握的方法和程序用,解决自己实际的问题的方法就是最好的方法

fjstcmcu 发表于 2024-3-24 15:07:28

话说 keil 怎么定义一个可重入函数?

fjstcmcu 发表于 2024-3-24 15:54:39

fjstcmcu 发表于 2024-3-24 15:07
话说 keil 怎么定义一个可重入函数?

是的,我是想我自己定义的函数希望成为可重入函数
页: 1 2 3 4 5 6 7 8 [9] 10
查看完整版本: STC单片机 uC/OS-II核心技术(12):关于临界区保护和函数可重入的测试题