zoukankan      html  css  js  c++  java
  • 【ARM】ARM程序规范

    1.函数名单词之间用_隔开,每一个字母大写

     
       Uart_Printf()
       //这个由三星的TEST风格延续下来,因此没有参数时,必须加void,否则ADS会编译报警
       void Test_Keyscan(void);
     
     
    2.寄存器名前要带小写的r。表示寄存器,大写名称要与DataSheet标的名一致..其宽度要根据硬件有效位来定义,其中必须带volatile关键字
     
       有效位大于16位
       #define rGPMCON          (*(volatile unsigned *)(0x7F008820))
       有效位小于等于16位,大于8位
       #define rWTCON         (*(volatile unsigned short*)(0x7E004000))
       有效位小于等于8位
       #define rNFDATA8    (*(volatile unsigned char *)(NANDF_BASE+0x10))
     
    3.寄存器对位赋值的写法。
       格式:  寄存器名 =               //寄存器名解释
                      (值 << 位移)   //每位的解释: 对应值的解释
                    | (值 << 位移)  //每位的解释: 对应值的解释
     
       注意象 (0<<12)等于没写,但是这样的写法起到占位的作用,表示12位为0.
    例:
       rCIWDOFST = // Set window offset register
       (0<<31) // window offset - 1: Enable, 0: No Offset
       |(0<<16) // Window horizontal offset1
       |(0<<0)); // Window Vertical offset1
     
    4.寄存器赋连续超过两位时要考虑清零问题.
     
       rGPKCON0 |= (10 << 30);
       这里的本意是把30,31两位置成10。但是假设原来的30位为1.这个表达式的结果变成设11了。
       因些标准写法是 ,先清零,再置。
       rGPKCON0  = (rGPKCON0 & ~(3 <<30)) |  (10 << 30);  
     
       如果需要清零位太多,不如一开始赋0值再来加比较简洁,保险。  
       unsigned int val = 0;
       rGPKCON0 |= (10<<30) | (10 <<2) ;
     
    5.一组相关值是定义成enum好还是宏定义好?
       从硬件角度是定义成宏定义好。
       一般硬件定位一组值不一定连续。如下定义。
       #define  CONST_VAL1  (0x00)
       #define  CONST_VAL2  (0x01)
       #define  CONST_VAL3  (0x02)
       #define  CONST_VAL3  (0x04)
       如果用enum容易笔误成连续值,而且因为不直观,在代码检查时不太容易查出来。
       当然可以手动赋值了,但就失去了enum的优点了。
     

    原文出处
     
     
  • 相关阅读:
    LeetCode 1275. 找出井字棋的获胜者 Find Winner on a Tic Tac Toe Game
    LeetCode 307. 区域和检索
    LeetCode 1271 十六进制魔术数字 Hexspeak
    秋实大哥与花 线段树模板
    AcWing 835. Trie字符串统计
    Leetcode 216. 组合总和 III
    Mybatis 示例之 复杂(complex)属性(property)
    Mybatis 示例之 复杂(complex)属性(property)
    Mybatis 高级结果映射 ResultMap Association Collection
    Mybatis 高级结果映射 ResultMap Association Collection
  • 原文地址:https://www.cnblogs.com/lcw/p/3159421.html
Copyright © 2011-2022 走看看