快速开发STM32所需C语言基础复习

1.位操作
C语言支持下列6种位操作符
.&:按位与
.| : 按位或
.^ : 按位异或
.~:取反
.<<:左移
.>>:左移
注:操作符不包括左小角的小点,请忽略小点

2.define 宏定义
define是C语言种的预处理命令,可以提高源代码的可读性,为编程提供方便。
常见格式: #define 标识符 字符串

3.ifdef 条件

					#ifdef 标识符
					程序段1
					#else
					程序段2
					#endif

他的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则对程序段2进行编译。
注:其中#else 程序段2可以没有

另一形式

#if 标识符 
程序段1
#endif  

如果标识符已经被定义过,那么执行程序段1

4.extern变量申明

extern可以置于变量或者函数前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

注意:extern申明变量可以多次,但定义只有一次。
在这里插入图片描述
5.结构体
声明结构体类型格式

格式:
struct 结构体名
{
	成员列表;
}变量名列表;

实例:
struct _GPIO
{
	int TMODER;
	int Tser;
}
**注:变量名列表结构体声明的结构体变量,可不写,以后再定义**
例如:struct _GPIO  age,number;//就定义了两个结构体变量age和number

定义结构体变量后,结构体成员变量的引用方法是

例如我们上面定义了的age结构体变量,我要输出他的成员变量Tser
那么应该写为
printf("%d",age.Tser);//也就是 结构体变量名.成员变量名,没什么特殊的

定义结构体指针变量

依然基于上面的_GPIO结构体
定义结构体指针变量:struct _GPIO  *age;
是的,只是结构体变量名前面加了*,但是要访问结构体变量成员时应该这样写
printf("%d",age->Tser);

6.typedef 类型别名

typedef 用于为现有类型创建一个新的名字,或成为类型别名,用来简化变量的定义。typedef在keil5中用的最多的就是定义结构体的类型别名和枚举类型。

struct _GPIO
{
	__IO uint32_TMODER;
	__IO uint32_Tser;
	......
}
此时我们定义一个上面的结构体应该这样定义
struct _GPIO age;


但是我们使用typedeftypedef  struct 
{
	__IO uint32_TMODER;
	__IO uint32_Tser;
	......
}GPIO
此时我们定义一个上面的结构体可以这样
GPIO age;
此时我们就定义了一个叫age的结构体变量
发布了11 篇原创文章 · 获赞 4 · 访问量 1409

猜你喜欢

转载自blog.csdn.net/OXOXOX6/article/details/104539833