您的位置:控制工程论坛网论坛 » 自动化软件 » 嵌入式C语言编程的几个知识点

szzunzheng

szzunzheng   |   当前状态:离线

总积分:180  2024年可用积分:0

注册时间: 2007-06-06

最后登录时间: 2009-10-12

空间 发短消息加为好友

嵌入式C语言编程的几个知识点

szzunzheng  发表于 2007/8/1 13:09:52      913 查看 1 回复  [上一主题]  [下一主题]

手机阅读

1。使用位操作的方法(在嵌入式系统设计中)
      一种极高可移植性的方法,使用#define 和 bit masks,如:
     #define   BIT2    (0x1 <<2)
     static  int   a;
     void Set_bit2(void)
     { a |= BIT2;}
 
     void Clear_bit2(void)
     { a &= ~BIT2;}
2. 要求设置一绝对地址为0x67a9的整型变量的值为0XAA66,典型代码如下:
     int   *ptr;
    ptr = (int *)0x67a9;
    *ptr = 0xaa66;
    或者较不太好的方法:
     *(int * const)(0x67a9) = 0xaa66;
3. 在中断中不能传递函数,不能返回一个值,在中断中一般不要做浮点运算。
4。注意C语言中的整型数自动转换原则,当有符号类型和无符号类型时,所有的操作数都自动转换为无符合类型。
5。关键字" volatile" 的几个问题:
     (1) 一个参数既可以是CONST,还可以是volatile吗?是的,例如只读的状态寄存器,它是volatile,因此可以被意想不到地改变,它是const,困此不能程序去修改。
       (2)一个指针可以是volatile吗? 是的,一个例子就是一个中断服务子程序修改一个Buffer的指针。
6。关键字const的含义:
         const    int   a ; //a是一个常整型数
         int  const   a;   //a是一个常整型数
         const  int  *a;   //a是一个指向常整型数的指针
         int * const a;   //a是一个指向整型数的常指针
         int const *a const; //a是一个指向常整型数的常指针
7。 用变量"a" 给出下面的定义。
      (1)   一个整型数: int  a;
      (2)   一个指向整型数的指针: int  *a;
      (3)  一个指向指针的指针,它指向的指针是个整型数:int  **a;
      (4)  一个有10个整型数的数组: int  a[10];
      (5) 一个有10个指针的数组,该指针是指向一个整型数的: int  *a[10];
      (6) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数:int (*a)(int).
      (7) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数:int (*a[10])(int).   
 
1楼 0 0 回复
  • mp44

    mp44   |   当前状态:在线

    总积分:753  2024年可用积分:0

    注册时间: 2007-01-05

    最后登录时间: 2010-12-12

    空间 发短消息加为好友

    mp44   发表于 2007/8/1 13:09:52

    2楼 回复本楼

    引用 mp44 2007/8/1 13:09:52 发表于2楼的内容

总共 , 当前 /