ARM C嵌入式编程中的几个关键字
ARM C嵌入式编程中的几个关键字
1、访问绝对地址的内存位置:
#define pISR_EINT0 (*(unsigned *) (_ISR_STRATADDRESS+0x74))
上述语句把无符号整数_ISR_STRATADDRESS+0x74强制转换为指针,指向RAM,用下面的语句可以访问它:
pISR_EINT0 = (int)Eint0_ISR
为了访问一个绝对地址,把一个整形数强制转换(typecast)为一指针。
注:第一个*表间址、第二个*表强制转换(看的不是太明白)
2、__irq:
为了方便使用高级语言编写异常处理函数,ARM编译器对异常处理函数做了特定扩展,只要使用关键字_irq,这样编译出来的函数就满足异常响应对现场保护和恢复的需要;
3、编写中断服务程序的一些基本原则:
√避免在中断服务程序中做浮点运算:好的中断服务程序应该遵循短小有效这一原则,在中断服务程序中做浮点运算大大违背这一原则,同时有些处理器/编译器就是不允许在中断服务程序中做浮点运算;
√中断服务程序不能有返回值:所以中断服务程序都定义为返回类型为void,即:void _irq Eint0_ISR(void);
√中断服务函数不能传递参数:故参数列表为void,即:void _irq Eint0_ISR(void);
4、Static:
一个static变量,其实就是全局变量,只不过它有作用域,它可用于保存变量所在函数被类调用期间的中间状态,比如:
int cCout()
{
Static int loop = 0;
.......
loop++;
.......
}
loop变量的值会跟随着函数的调用次数而递增,函数退出后,loop的值还存在,只是loop只能在函数中才能被访问(函数作用域),而loop的内存 空间也只会在函数第一次被调用时才会被分配和初始化,以后每次进入函数,都不为static分配了,而直接使用上一次的值。在模块内,一个被声明为静态的 函数只可被这一模块内的其他函数调用,模块外其它函数无权访问,是一个本地全局变量。
5、Constant:
将一个变量或对象定义成constant类型,则定义之后不能被更新(可读不可写),即在定义或说明类型时必须给他一个初始值。
几种须要注意的地方:
√如果const位于星号(*)的
相关文档:
一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode( ......
C输出格式总结
2007-07-08 12:09
1 一般格式
printf(格式控制,输出表列)
例如:printf("i=%d,ch=%c\n",i,ch);
说明:
(1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:
&nbs ......
1.引言
本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。
许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达 ......
我将业务代码去掉了,只是用来搭个基本框架,用到的时候直接拿来用就可以了。(我这个是起一个socket)如果有什么建议请联系我。ChuangshengGuan@Gmail.com
main.c
Code:
#include "Services.h"
int main(int argc, char *argv[])
{
SERVICE_TABLE_ENTRY ServiceTable[2];
/* 指向表示服 ......
http://www.gamedev.net/reference/programming/features/orgfiles/page2.asp
通过四个pitfall讲解头文件的由来和好处,以及使用头文件定义inline func and template.
Remember that, as far as the compiler is concerned, there is absolutely no difference between a header file and a source file.
The key idea ......