STM32 学习笔记 二.C语言复习

STM32的编码还是基于C语言的,所以呢,在学习32的过程中也不能轻视C语言的学习,所以,现在就来在复习一下32中较常用的C语言!
首先,讲一下宏定义
#define,#ifdef,#else,#ifndef,#endif

(1).#define

例:#define a 10
将a定义为10,之后所使用的全部a的值都为10

(2)#ifdef,#else

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

意为:如果标识符被先前定义过了则直行程序段1,否则执行程序段2,#endif结束#ifdef.

(3)#ifndef

#ifndef x
#define x
程序段1
#else
程序段2
#endif
意为:先测试x是否被宏定义过,如果x没有被宏定义过,定义x,并编译程序段 1, 如果x已经定义过了则编译程序段2的语句,最后终止if

再讲一下另一个重点,位运算
在STM32中位运算还是十分重要的
先讲几个运算符吧!

运算符含义运算符含义
&<<左移
l>>右移
^异或~取反

这就是几个常用的运算符了,再下来举几个简单的例子

(1)&,|,~,^
参数参数运算符结果
10&0
01&0
11&1
00&0
10l1
01l1
11l1
00l0
10^1
01^1
11^0
00^0
1~0
0~1

总结一下:
&:有0则0,全1则1。
|:有1则1,全0则0。
^:不同为1,相同为0。
~:0变1,1变0。

(2)<<,>>
参数运算结果
1001>>20010
0101<<31000

STM32实际例子
GPIOA->CRL &= 0XFFFFFF0F
上述功能是将第4-第7位变为0
这个例子是在原子哥视频里见到的,在刚开始半天看不懂,问了大佬才懂,现在来详细讲一下,0X代表这是16进制,一个F代表的是15,在二进制中1111代表15
所以一个F对应一个1111,也就是说一个F对应四位,看上面的例子,简单点,就看后三位F0F,在二进制中就是1111 0000 1111,对他进行与运算,有0则0;自然第4-7位就被赋为0了(ps最右边的为第0位)
GPIOA->CRL l= 0X00000040
将相应的位数变为4,思路与上面的一致,就不过多讲解了!
ok就先讲这么多了!位运算一定要学好!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值