找回密码
 立即注册
查看: 523|回复: 1

STC32G FreeRTOS入门(6):如何学好RTOS编程

[复制链接]

该用户从未签到

63

主题

703

回帖

1万

积分

荣誉版主

积分
10906
发表于 2023-8-6 23:16:12 | 显示全部楼层 |阅读模式
学好RTOS编程就像学好开汽车一样,四个字“举一反三”+四个字“动手实践”。
(4)第一步依葫芦画瓢。学好开车,你必须的亲自开车上路,通用学好RTOS编程,你首先应该有一款开发板,然后在上面亲自动手编程才行。本系列入门文章将以STC32G官方实验箱为例介绍。
作为第一步,你应该把RTOS的范例程序重新编译链接生成HEX文件,然后把它烧录到开发板上,看实际运行效果。这就是依葫芦画瓢。
(2)如果你有同款实验箱,你直接把使用范例程序,如果你没有,则依葫芦画瓢的第一步就是把范例改造一下,适合你的开发板。本文的入门(4)只用了串口1,任何开发板都有,入门(5)只用了接在某个端口的8个LED,绝大多数开发板都有,不行就自己动手连上去。因此你应该动手试一试,不要看着我说的讲得简单,你要亲自试一试,这很重要!很多看热闹的人一上车,就把油门当刹车了。
(3)第二步做边界试探。任何事物的正确性都有一个度,跨出边界就翻车了。你只有掌握了这个度,你才真正懂了这个方法。
比如入门(4)给出了三个实时任务的范例,当然我是验证过的。那么,对于STC官方的移植版,定义8个任务可以运行吗?当然可以,不用试,因为STC官方范例里已经有8个任务了。那么16个任务行不行?100个任务行不行?你肯定说1000个应该不行,那最多几个呢?你得亲自试一试。
比如入门(5)给出的软件延时,文章中说延时100毫秒是准确的,但是延时0毫秒、1毫秒时还准确吗?你得自己试试,毕竟一篇文章的字数有限,我不可能把全部内容都写出来,只能写那些重要的,而这些边界是要你自己去试试,比如以延时函数的参数作为横坐标,以实际的延时作为纵坐标,画出一条误差曲线来。(强烈建议对微秒软件延时函数画这条曲线)
(4)想要知道一件事的边界在哪里,最好的方法就是翻车,翻了你就知道边界在哪里了,以后就不会掉下去了。对于学习编程,在学习阶段在开发板实验箱上翻车不会有危险,最多把单片机烧毁了(这需要硬件的配合,比如把两个端口直接短路,比如矩阵开关按下时。所以矩阵开关应该以STC官方例子为准,要串电阻保护,这是题外话)。在开发板上在学习阶段翻车了,知道了边界,那么在从事实际工作中就不容易翻车了。
(5)知识点:探索边界的翻番法和对半法。比如8个任务可以了,下次试9个任务就太低效了,下次应该翻番试16个,如果16个可以了,下次就翻番试32个,以此类推先了解大的边界范围。如果16个行,32个不行,下次就是对半试(16+32)/2=24个。如果24个不行,下次就对半试(16+24)/2=20个,以此类推。对于掉下去和不掉下去这种二值判断问题,翻番对半法是试探次数最少的方法。
(6)第三步是带着问题去探索。比如上面20个任务不行,那么问题出在哪里?这时就可以去百度,去查资料,看源程序,确定限制任务数目的因素。
看到别人说得不算,还要自己亲自试一试,这很重要。你可以改变一下限制的原因,看看能不能提高。即使不能提高任务的数目,你也知其所以然了,在这个问题上你就达到了和STC官方移植专家的水平了。
带着问题去看书,去探索,事后的验证很重要,就像旅游前做攻略一样,光做攻略不实际去旅游没有用。
(7)最后一步是做总结。做总结就是把自己探索的结果记录下来:首先是给出结论,其次是探索过程描述,最后是自己实验的程序,查到的资料。做完总结就算完成了一件事,登上了一座山,然后就可以去做下一件事了。

回复 送花

使用道具 举报

  • TA的每日心情
    开心
    2024-2-28 16:25
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    14

    回帖

    166

    积分

    注册会员

    积分
    166
    发表于 2023-12-3 12:28:50 | 显示全部楼层
    讲的好
    回复 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-18 16:36 , Processed in 0.054570 second(s), 32 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表