C语言嵌入式系统编程修炼之软件架构篇


  用户主程序和各模块的处理函数都以C语言完成。用户主程序最后都进入了一个死循环,其首选方案是:

  这个语法没有确切表达代码的含义,我们从for(;;)看不出什么,只有弄明白for(;;)在C语言中意味着无条件循环才明白其意。

  你可能会辩驳,大声说:凡事都不是绝对的,2、3、4都可以不是死循环。Yes,you are right,但是你得不到鲜花和掌声。实际上,这是一个没有太大意义的牛角尖,因为这个世界从来不需要一个处理完几个消息就喊着要OS杀死它的WIN32程序,不需要一个刚开始RUN就自行了断的嵌入式系统,不需要莫名其妙启动一个做一点事就干掉自己的线程。有时候,过于严谨制造的不是便利而是麻烦。君不见,五层的TCP/IP协议栈超越严谨的ISO/OSI七层协议栈大行其道成为事实上的标准?

  等类似问题。面对这些问题,我们只能发出由衷的感慨:世界上还有很多有意义的事情等着我们去消化摄入的食物。

  中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序(ISR),类似于__interrupt、#program interrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。

  在某项目的开发中,我们设计了一个队列,在中断服务程序中,只是将中断类型添加入该队列中,在主程序的死循环中不断扫描中断队列是否有中断,有则取出队列中的第一个中断类型,进行相应处理。

  * 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!

  2018 QCon全球软件开发大会 极客时间首发 Airbnb 朱赟博士新书

  更多

  2018 QCon全球软件开发大会 极客时间首发 Airbnb 朱赟博士新书

  Acer V7500家用投影仪4499元送高清HDMI线X全国销售工程机可根据项目申请价格

  走进话匣子里的心灵世界,尼康跨界MISSOSE·席溪2019春夏新品发布

  尼康Z7新品到货!搭配24-70mm镜头月底最新报价15800元!更多优惠!

  戴森全新Pure Hot+Cool空气净化暖风扇 洁净暖风对抗冬日室内污染