找回密码
 立即注册
查看: 1407|回复: 13

STC32G FreeRTOS入门(1):单片机后台任务简介

[复制链接]

该用户从未签到

63

主题

652

回帖

1万

积分

荣誉版主

积分
10790
发表于 2023-8-6 13:06:18 | 显示全部楼层 |阅读模式
FreeRTOS是一款开源的专为小型嵌入式系统设计的可扩展的实时内核,已经被移植到STC最新的STC32G12K128单片机上了。在STC官网上给出了以STC32G实验箱为平台的FreeRTOS演示范例,该范例充分展示了FreeRTOS的特色、STC32G单片机的性能和STC32G实验箱的功能。
通常将单片机程序分为两大类:常见的裸机程序和RTOS程序。本系列文章计划以FreeRTOS为例,由浅入深地介绍RTOS的基本概念和如何进行RTOS编程。
本文介绍单片机最简单的程序:后台任务程序。与PC机上操作系统上的程序不同,最简单最能反映单片机特点的C语言程序不是“Hello, World!”,而应该是一个计算数字加法的程序。
1)下图是在STC8H8K64U单片机上运行的计算加法“Z=X+Y”的C语言程序:
Fig_01.jpg
2)所有单片机程序都包括两个部分,一个是系统定义(第11行到第16行程序),一个是单片机主函数(第18行到第44行)。
单片机的用途非常多,从小小的台灯电饭锅到各种工业控制器,所以单片机的种类也很多,不同种类的单片机的控制方法不一样。因此使用某种单片机并编程实现某种功能,就要在单片机程序中先定义它。第13行程序就是具体包含了本程序需要的STC8H系列单片机的SFR(特殊功能寄存器)地址信息的头文件。
单片机的核心是一个CPU,完成各种任务要靠执行二进制机器码来完成,为此软件厂商事先提供很多C语言函数库,编程者只需要访问对应的功能函数就可以实现指定的功能。比如第16行是包含C语言的标准输入输出函数库头文件。有了这个头文件,第37行程序通过调用“scanf”函数就可以从上位机接收XY两个数,第40行通过调用“printf”函数就可以将加法的结果Z传到上位机上显示出来。
3)第19行开始的“main”函数在单片机程序中称为主函数。当单片机加电启动后,系统的引导程序经过一些最基本的设置后,第一个访问的就是“main”函数,通过“main”函数将单片机运行的控制权交给用户的程序。
KeilC51程序中,单片机的主函数与PC上的操作系统的可执行程序的“main”函数不一样,没有谁传递参数给它,所以是无参数函数。
4)单片机的主函数包括两个部分,首先是只执行一次的系统设置部分,比如上面程序的第24行到32行,对单片机上的串口设备进行了设置。其次是一个无限循环,使用无限循环程序结构的目的是让用户程序永远不要退出主函数。
5)从操作系统的视角,单片机的主函数被称为“后台任务”,对于后台任务程序是不能用“return”语句退出的,退出后的结果依赖于编译器。使用KeilC51编译器,对小部分简单程序,退出主函数导致系统热启动,程序再来一遍,但对大部分程序,退出主函数会导致程序跑飞,结果不可预料,如果是机械控制系统,则可能产生危险后果。
6)要点:单片机程序从“后台任务”的主函数开始,在完成进行一次性的系统设置(在arduino中对应的是“setup”函数)后,然后进入后台任务的无限循环(在arduino中对应的是“loop”函数),连续地、重复地执行用户后台任务程序。
下面是本范例的效果视频:


7)提高:模仿上面程序,编写一个从上位机键盘输入5个数:A、B、C、D和E,然后计算四则运算“X=A+B*C-D/E”的值,输出到上位机显示出来的完整的后台任务程序。

FreeRTOS_001_后台任务.rar (40.39 KB, 下载次数: 133)

回复 送花

使用道具 举报

  • TA的每日心情
    开心
    前天 20:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    16

    回帖

    71

    积分

    注册会员

    积分
    71
    发表于 2023-8-9 19:34:26 | 显示全部楼层
    出个视频吧,,,学rtos我始终都没怎么得法
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.1]初来乍到

    0

    主题

    14

    回帖

    166

    积分

    注册会员

    积分
    166
    发表于 2023-12-3 11:56:08 | 显示全部楼层
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 05:53
  • 签到天数: 143 天

    [LV.7]常住居民III

    15

    主题

    544

    回帖

    1986

    积分

    金牌会员

    打工人

    积分
    1986
    发表于 2023-12-30 13:17:49 | 显示全部楼层
    好教程,可否出个视频。
    打工人
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:20
  • 签到天数: 163 天

    [LV.7]常住居民III

    0

    主题

    72

    回帖

    650

    积分

    高级会员

    积分
    650
    发表于 2023-12-30 14:38:04 | 显示全部楼层
    感谢楼主分享,学习学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:58
  • 签到天数: 145 天

    [LV.7]常住居民III

    0

    主题

    395

    回帖

    418

    积分

    中级会员

    积分
    418
    发表于 2023-12-30 15:06:48 | 显示全部楼层
    一直裸跑,FreeRTOS不熟悉,也来学习一下
    靡不有初,鲜克有终
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:03
  • 签到天数: 144 天

    [LV.7]常住居民III

    4

    主题

    70

    回帖

    1105

    积分

    金牌会员

    积分
    1105
    发表于 2024-1-11 16:00:47 | 显示全部楼层
    感谢楼主分享,学习学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:58
  • 签到天数: 145 天

    [LV.7]常住居民III

    0

    主题

    395

    回帖

    418

    积分

    中级会员

    积分
    418
    发表于 2024-1-12 12:13:43 | 显示全部楼层
    一直不得要领,感谢您的教程,可以出视频就好了
    靡不有初,鲜克有终
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:44
  • 签到天数: 153 天

    [LV.7]常住居民III

    2

    主题

    88

    回帖

    262

    积分

    中级会员

    积分
    262
    发表于 2024-1-12 13:33:45 | 显示全部楼层
    51的内存竟然可以rtos?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:36
  • 签到天数: 133 天

    [LV.7]常住居民III

    7

    主题

    73

    回帖

    523

    积分

    高级会员

    积分
    523
    发表于 2024-3-12 08:15:56 | 显示全部楼层
    杨老师,把第一集的例程下载到STC8板子上,电脑识别不了端口设备,因而无法运行程序。需要什么前期准备和设置吗?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-8 02:57 , Processed in 0.070852 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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