1,裸机系统:单片机软件系统通常是一个裸机系统(也有叫前后台系统),就是只有一个主函数不停的循环,监控用户输入,执行,输出信息。
2,RTOS实时系统:就是系统可以同时运行多个任务(线程),有任务调度器调度多个任务,可视为同时运行多个任务。由于51单片机资源少,可供选择的系统不多。最经典的是:Keil IDE自带的RTX51 Tiny系统,它使用简单,方便,自带例程。
3,网上搜索《RTX51 Tiny第2版用户手册》,通读此手册(做个简单测试暂时不需要读也是可以的)。
4,RTX51 Tiny简介:最大线程数16个,最大活动线程数16个,代码需求900字节,线程切换时间100到700个时钟周期。系统API数据13个。(精简如此,入门的好选择)
5,如何测试?从Keil的安装目录下找到C51/RtxTiny2/Examples/Ex2,找到它,拷贝Ex2到电脑桌面,进入文件夹,双击RTX_EX2.uvproj打开工程。可按照下图添加编译输出文件夹。编译成功之后即可进入仿真测试。把每个线程数的计数器变量添加到观察窗口1,点击运行按钮即可看到计数器值在变化(下面有效果图)。形式去下。
6,如何定义一个任务(线程)?与普通函数差不多,函数名后面加关键词(_task_ 数字)这里的数字就是任务编号(创建任务时使用这个数字编号范围0到15支持16个任务),函数内部是一个无限循环。
void ButtonCheck() _task_ 0
{
//定义变量,这里的变量会存到任务栈
//使用os_create_task(数字)创建其他任务
//数字为任务ID
while(1)
{
// 自定义按键检测功能
os_switch_task();//切换到其他线程
}
}
注:使用系统之后这里是没有main()函数的,系统会从0号任务开始。
注:其他任务使用上面的形式按需定义
7,注意事项:多任务设计具有很大的灵活性,添加一个新任务基本不影响当前的设计。也是单片机入门后的一个提高事项。使用多任务之后,函数不要操作公共变量。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。