一、定义整数的两种不同数据类型
有符号型(signed):可以表示正负数,最高位为0表示正数,最高数为1表示负数。
无符号型(unsigned):只能表示正数。
二、寄存器赋值的方法
单片机基础操作就是给寄存器赋值去实现一些功能,而STM32单片机有标准库函数、HAL库函数、寄存器三种主流写法,前两种就是通过typdef、#define来将一些十六进制的数替换成自定义的标识符,这样的好处就是提高代码的可读性例如: #define GPIO_MODE 0x00000003u 配置GPIO的模式。
而我们操作寄存器呢?
要记住一个重点,我们在C语言和数电中都学过的与操作(&)和或操作(|)用|来置位用&来清零有三种方法:
法1:先给寄存器清零,然后再用&来置位。
法 2:异或操作,不同为1,相同为0。
三、#define宏定义
宏定义的核心是替换,提高可读率和易读率
#define LED1(X) do{x?\ }while(0)
用do while来构造宏定义
四、条件编译
有#ifndef #if() #ifdef &