查看: 1486|回复: 2

嵌入式系统C语言编程需要遵守什么样的原则?

[复制链接]
  • TA的每日心情
    开心
    2017-12-22 08:59
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-3-31 16:12:48 | 显示全部楼层 |阅读模式
    分享到:

    大家对C语言非常熟悉了,你是否这样一个疑问呢:为什么学习这么久的C语言,自己还徘徊在入门处呢?小编看过很多别人的编程经验总结,发现他们多数是在说自己的编程技巧。谁都知道好的编程技巧能显著提高程序的效率,但是这样的技巧是靠大量的工程实践总结的。只有在有一定功底后,才可以去追求这些编程技巧。但是编程的原则却是要在学习一开始就要认真贯彻,才能养成良好的编程习惯,苦练内功,后练上层功夫才不会走火入魔。

    下面我们就一起来简单说一下:嵌入式系统C语言编程需要遵守什么样的原则呢?
    一、模块划分
    C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能:

    (1)一个功能模块即是一个.c文件和一个.h文件的结合,.h文件中是对于该模块功能函数和使变量的声明  
    (2)该模块提供给其它模块调用的外部函数及数据都需要在.h中文件中以extern关键字声明  
    (3)模块内的函数和全局变量只能在.c文件定义  
    (4)不允许在.h文件中定义变量(定义变量和声明变量的区别在于定义会产生内存分配的操作,而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量), 更多精彩内容还可关注微信华清远见。
    二、一个嵌入式系统程序包括两类模块分三层编写:  
    (1)硬件驱动模块,一种特定硬件对应一个模块,包括了片内集成的硬件模块和外部扩展的  
    (2)软件功能模块,软件功能模块是建立在硬件驱动模块上的与硬件无关的逻辑功能。  
    (3)三层编写即HAL(硬件应用层),API(应用函数包),APP(逻辑应用层)注:名称是借用的,表大个意思而已。HAL就是硬件驱动模块和系统硬件密切相关,API可以是建立在HAL上的硬件应用服务程序也可以是通用的函数模块,APP则是最终构成嵌入式系统应用的功能逻辑关系。HAL和API是为了方便技术积累和提高开发效率而分开了,APP则是针对特殊应用而定制的。
    三、中断服务程序的要求:
    (1)不能返回值  
    (2)不能向ISR传递参数  
    (3)ISR应该尽可能的短小精悍,不允许有等待信号的操作  
    四、编程风格问题  
    五、需要学会熟练应用的C语言的基本手法
    (1)数据指针,不能仅仅只会使用数组  
    (2)宏定义,定义寄存器地址,定义宏函数等  
    (3)函数指针的应用  更多精彩内容还可关注微信华清远见。
    (4)条件编译,在带操作系统的应用时经常要用
    六、不要偷懒,写好必要的注释
    七、做到以上几点时就可以吸收高超的编程技巧了。
    简单说了几点,虽然不深入,但小编由衷希望能帮助到大家。同时,希望大家今后多做项目,多做反思总结工作,不断向高薪目标靠近!



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-18 12:34
  • 签到天数: 1673 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    发表于 2016-3-31 18:21:49 | 显示全部楼层
    现在连arm都不会啊,想学都不知道怎么学,下载下来的程序都看不懂,改也改不明白,糊涂中~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-1-28 16:20
  • 签到天数: 980 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-4-1 08:28:52 | 显示全部楼层
    学习了。
    11111111111
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 08:36 , Processed in 0.129043 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.