为了进一步把单片机的潜能发挥到极限,我一向想写个程序把单片机的一切资源都用光,可是假如按照单道程序次序履行的方法,很难把MCU的CPU时间都充沛利用,比方运用软件延时函数实际上便是在无谓地消耗着CPU的时间什么工作都不做,由于CPU一向在循环等候着条件完毕,这相当于函数被堵塞了。
为了更明显地验证这一点,你能够在WINDOWS下翻开VC6.0或其他的C言语编译器,写段代码如下:
#include
void main(void)
{while(1) ;}
意思是让CPU不做工作在等候,你猜,这句代码会消耗掉多少CPU时间?
答案会依据不同机型而不同,假如是单核CPU的话,这句话会消耗掉CPU挨近100%的时间!假如是双核CPU,则只消耗掉50%左右,由于这段代码只运转在其中一个核,其他一个核还能够做其他工作,截图如下:
然后你能够测验下面这几句代码:
#include
#include
void main(void)
{while(1)
Sleep(100);
}
这段代码实际上也是什么都不做,它不断地调用Sleep()函数,让它延时100毫秒再醒来,然后持续睡觉。现在你能够再翻开使命办理器看一下CPU时间用了多少,答案是根本不必CPU时间!!
为什么同样地什么工作都不做,不同咋就这么大呢?这是由于运用了Sleep()这个函数是WINDOWS操作系统为你供给的,调用Sleep()之后 WINDOWS操作系统主动把你这个程序挂起了(便是暂时扔到一边不论),然后让CPU去履行其他程序,比及时间到了,操作系统再把这段程序康复持续履行,这样的话CPU就能够得到充沛有利地势用了,也便是说你能够在一块CPU里边“一起”履行多个使命而互不影响!(这儿所说的“一起”并不是一起履行,CPU每一时间只能做一件事,但假如速度满足快的话就能够让人感到它是在一起履行多项使命了)。是的,操作系统便是为了处理多使命履行而生的。已然操作系统这么奇特,可不能够让单片机也来爽一把呢?答案是必定的。下面就介绍怎样给单片机写个操作系统!!
/************************************************************************************/
工欲善其事,必先利其器,为了写出操作系统,有必要得有必定的理论以及技能根底,
单片机方面的能够http://www.51hei.com了解到,从下面是所需的资料:
单片机方面的能够http://www.51hei.com了解到,从下面是所需的资料:
//1 C言语编程根底 :三斤
//2 数据结构理论 :一斤八两
//3 操作系统原理 :两斤三两八钱
//4 计算机组成原理以及单片机原理及使用 :两斤半
//5 汇编言语编程根底 :一斤四两
//6 一份坚持的心 :多少斤自己衡量衡量,呵呵
/*************************************************************************************/
这么多怎样学?去哪学?下面是我个人引荐的书单,仅供参考:
1. C言语是有必要要会的,并且要娴熟,比方”预编译指令“你有必要要懂,模块化编程有必要要了解,指针是C言语的一大精华,在操作系统源码里边指针是满天飞的,所以得有满足的理论根底,引荐国外的《C Primer Plus》 美国 Stephen Prata著,里边讲的内容由浅到深,言语引人入胜,大二开端看,现在还时不时地要回头看,确实是一本不错的好书:
其他,学会了C的根本语法之后你还得要会一点点编程技巧以及编程要注意的问题之类的,引荐有空的话多看看《C专家编程》和《C圈套与缺点》,这两本书是C编程范畴里边的经典之作,信任看完你的功力会大有出息,可是仍是要以常常敲代码为主:
2. 操作系统里边的数据组织形式都是以数据结构的理论为根底的,所以你得懂得数据结构才干看懂里边的意义,但也不要求把数据结构全通晓,引荐严蔚敏版别的《数据结构》,不过里边的算法都是用伪代码写出来的:
3. 有了编程根底之后你还有必要要懂得操作系统的根本原理,比方使命之间是怎样切换的,内存是怎样办理的都得懂,引荐《操作系统-精华与规划原理》
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/255537.html