zoukankan      html  css  js  c++  java
  • 单片机 学习要点

    一、volatile 修饰符

    volatile标识一个变量意味着这个变量可能被非本程序的其他过程改变,例如某个访问这一变量的某中断程序。为变量加上这一标识可以禁止编译器的优 化,使程序正确地按设计者的意图运行。例如下面的程序,我们将intr_func注册为中断函数,某个中断发生时触发这一函数:

    unsigned char flag = 1;
    
    int main(int argc, char **argv) {
        reg_intr(XXX, intr_func);
        while(flag) {
            printf("hello
    ");
        }
        return 0;
    }
    
    void intr_func(void) {
        flag = 0;
    }

    当不加volatile时,编译器会直接将while条件中的flag换成1,因此即使中断发生也无法结束循环;如果给flag加上volatile标识,编译器就不会做前述的优化,程序得以按设计的意图工作。

    二、字符串相加

     两个直接字符串之间不能添加 + 号,因为字符串相当于一个字符指针,添加加号之后会提示,在char* 之间不能用 符号‘+’ 操作。

    比如说: printf(“abc" "def"); 这点跟C#是有区别的!谨记!

    三、编译日期用法 __DATE__, __TIME__

    #define BuildTime  __DATE__" "__TIME__ 

    在编译该文件的时候,会自动将BuildTime宏定义成 当前的编译时间,然后每次调用的时候都是这个值,如果源文件比较大。那么每个文件的编译时间会有明显差别。

    四、编译

    Code, RO-data,RW-data,ZI-data

    Code为程序代码部分
    RO-data 表示 程序定义的常量const temp;
    RW-data 表示 已初始化的全局变量
    ZI-data 表示 未初始化的全局变量

    Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952

    Code, RO-data,RW-data ............flash
    RW-data, ZIdata...................RAM

  • 相关阅读:
    JS中数组去除重复的方法
    ember.js里的实用方法
    Ember入门指南——教程目录
    如何解决问题?
    Web前端开发工程师基本要求
    (转)轻松学习JavaScript三:JavaScript与HTML的结合
    (转)JavaScript二:JavaScript语言的基本语法要求
    HTML的checkbox和radio的美化
    C#串口通信—向串口发送数据,同步接收返回数据
    C#生成验证码
  • 原文地址:https://www.cnblogs.com/-liszt/p/3562559.html
Copyright © 2011-2022 走看看