前两天面试去,面试官是个做c/c++语言,
通信编程的,他问了几个关于
单片机用到的数据类型的问题,把我问傻了。做单片机从来没有仔细考虑过这个问题,做了半年了,突然觉着自己白搞了一样。
拿msp430为例:
#define DIVS0 (0x02) /* SMCLK Divider 0 */
DIVS0被常数00000010赋值,0x02是char型的吗?那么DIVS0是什么型的?
再比如:#define CPUOFF (0x0010u)
0x0010u是无符号整形的吧,那么CPUOFF是什么型的?接着如下
#define LPM0 (CPUOFF)
那么定义的LPM0又是什么类型的?
从前知识照着demo去编写程序,确没有从软件的角度去分析过,有没有牛人过来指点一下?
个人理解:编译平台通常都是有针对性对某些MCU编程,比如在建立工程文件前需要选择MCU型号等,这一过程也许就已经将MCU的各个寄存器地址的寄存器类型已做了预处理,比如32位、16位还是8位。寄存器赋值都是无符号数的吧,因为有符号数意义不大。
一周热门 更多>