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位于星号(*)的
相关文档:
我从数据库动态读取2个父节点:
111
a
a1
b
b1
c
&n ......
一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode( ......
当要建立线程等时,在Linux下,用文本编辑,在键入“g++ -lpthread”.......“可以把库pthread引入”,编译通过。现在想用eclipse,但是默认情况下,引入不了pthread。会报“undefined reference to phread_create”等错误。
解决方法:可以在project中好到properties
在里面的&ldquo ......
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 ......