嵌入式软件开发和普通软件编程相比,有一些自己的特点,下面从嵌入式软件架构,中断编程,寄存器配置,浮点运算等几个方面来讲解嵌入式编程中的注意事项.
武汉东西湖区嵌入式培训怎么收费
在公司进行嵌入式项目开发的时候,并不是你一个人在单打独斗,通常是一个团队在一起战斗。很多人在一起共同完成一个嵌入式项目,通常是每个成员,每个小组完成整个项目中的一个或几个模块。编写的代码首先是给人看的,其次才是给机器执行的,这就要求团队中的每个人在编写软件的时候,要遵循统一的编程规范和编码风格,提高代码的可读性和可维护性,方便团队成员之间的沟通和交流。
粤嵌嵌入式培训,循序渐进,6大课程模块吃透“嵌入式”
搭建嵌入式培训Linux开发环境
Linux系统基础入门
高质量的编码规范
嵌入式培训C语言编程
数据链接
Linux IO编程
Linux多线程编程
Cortex-M4开发基础
uC/OS-11操作系统
Cortex-M4开发高级
嵌入式培训web服务器搭建及开发
Linux音视频编程
Linux串口编程
嵌入式培训数据库编程
Linux网络编程
Linux shell编程
C++语法及编程提高
QT应用开发进阶
嵌入式平台软硬件架构分析
Linux设备驱动开发
系统移植
嵌入式编程中的注意事项
一个大型的嵌入式软件往往需要根据功能的不同划分成多个软件功能模块。
1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;
2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;
3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量
中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。 许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序. 类似于__interrupt、#program interrupt等。当一个函数被定义为中断服务处理程序的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。
中断服务程序需要满足如下要求:
1) 不能有返回值;
2) 不能向中断服务处理程序传递参数;
3) 中断服务处理程序应该尽可能的短小精悍,不要包含耗时的代码
嵌入式软件是面向硬件底层的软件,我们在对硬件进行编程时,通常是通过配置硬件相关的寄存器来实现的。在配置寄存器时,通常我们只需要配置寄存器的1位或几位,对于其他不需要配置的位,我们要保持不变,不要更改我们不需要配置的位。
例如:我们希望配置寄存器的 GPIOADAT 的第 1位 为 1
我们不能这样写成这样:
GPIOADAT = 0x02; //将其他位设置为 0
而应该写成这样:
GPIOADAT |= 0x02; //保证其他位不变
大多数低档次的单片机都是不支持浮点运算的,因此在实际使用过程中也很少用到,因此为了降低成本,一般都去掉了浮点运算模块,这就带来了一个问题,如果万一要用到浮点运算怎么办?我们可以采用的是“定点”的方法来解决这个问题,就是直接放大10的N次方倍进行整数的计算,可以得出近似值,因此为了不增加不必要的麻烦,应该总是尽量避免使用浮点运算,一般情况也是可以避免的。
嵌入式开发过程中,在定义硬件寄存器的时候,需要使用volatile关键字。 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。 如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 武汉粤嵌教育 网站详细了解,免费咨询电话:400-998-6158