STM32基础C语言复习
一.stdint.h简介
stdint.h 是从 C99 中引进的一个标准 C 库的文件
路径:C:\MDK5.34\ARM\ARMCC\include
![](https://img-blog.csdnimg.cn/img_convert/d10f4e92f1c4f797247048e532a4f844.png)
二.位操作
运算符 | 含义 | 运算符 | 含义 |
& | 按位与 | ~ | 按位取反 |
| | 按位或 | << | 左移 |
^ | 按位异或 | >> | 右移 |
0 & 0 = 0 1 & 0 = 0 0 & 1 = 0 1 & 1 = 1
0 | 0 = 0 1 | 0 = 1 0 | 1 = 1 1 | 1 = 1
0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 1 ^ 1 = 0
~ 11100100 = 00011011 11100100 << 2 =10010000 11100100 >> 2 =00111001
![](https://img-blog.csdnimg.cn/img_convert/580c66bee8770294e017b3ba74132bb3.png)
前面的是第六位为0,后面的是第六位为1
三.宏定义
![](https://img-blog.csdnimg.cn/img_convert/eff8e933506d9b3211a7795d75f57806.png)
四.条件编译
让编译器只对满足条件的代码进行编译,不满足条件的不参与编译!
指令 | 作用 |
#if | 编译预处理条件指令,类似if |
#ifdef | 判断某个宏是否已被定义 |
#ifndef | 判断某个宏是否未被定义 |
#elif | 若前面的条件不满足,则判定新的条件,类似else if |
#else | 若前面的条件不满足,则执行后面的语句,类似else |
#endif | #if,#ifdef,#ifndef的结束标志 |
五.extern声明
放在函数/变量前,表示此函数/变量在其他文件定义,以便本文件引用
extern uint16_t g_usart_rx_sta;
extern void delay_us(uint32_t nus);
六.类型别名(typedef)
为现有数据类型创建一个新的名字,或称为类型别名,用来简化变量的定义
typedef 现有类型 新名字
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef struct{
IO uint32_t CRL;
IO uint32_t CRH;
…}
GPIO_TypeDef;GPIO_TypeDef gpiox
七.结构体
struct 结构体名{
成员列表;
} 变量名列表(可选);
struct student{
char name; / 姓名
int num; / 学号
int age; / 年龄 /
char group; / 所在学习小组
float score; / 成绩 /
}stu1, stu2;
八.指针
指针就是内存的地址
指针变量是保存了指针的变量
类型名 * 指针变量名
char * p_str = “This is a test!”;
*p_str:取p_str 变量的值
&p_str:取p_str变量本身的地址