当前位置:   article > 正文

32单片机 C语言 寄存器(四)_使用c语言判断单片机寄存器数据位

使用c语言判断单片机寄存器数据位

一、C语言相关知识
1.位操作
"&"按位与:某对应位置值都为 1,该位的结果为1;否则,该位结果为 0。[1010&1001=1000]

"|"按位或:某对应位置值只要有一个为 1,该位的结果为1;否则,该位结果为 0。[1010|1001=1011]

“~” 取反:某位值为1,该位结果为0;某位值为0,该位结果为1。[~1010=0101]

"^"按位异或:某对应位上值相同时,该位的结果为0;否则,该位结果为 1。[1010^0110=1100]

"<<"左移:将某数的全部位左移若干位。[1011<<2=1100]

">>"左移:将某数的全部位右移若干位。[1011>>2=0010]

2.#define宏定义
#ifdef 标识符 //if define 同理 ifndef = if not define
程序段1
#else
程序段2
#endif
//如果定义了某个关键字,则执行程序1,如果没有定义,则执行程序2。

3.其他
extern 申明变量
变量只能定义一次,但可以多次声明。
typedef 类型别名
定义一种类型的别名,可以用作同时声明指针型的多个对象。
struct 结构体
可以将无序变量构造类型,使程序变得有序。
static 静态变量
申明局部变量,储存在静态存储区,函数调用结束后,值不会被释放,具有记忆功能。

二、寄存器地址名称映射分析

#define PERIPH_BASE ((uint32_t)0x40000000)
//外设基地址
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
//APB2基地址
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
//GPIOA基地址
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
//再去寻找对应端口偏移量,如下图
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/565929
推荐阅读
相关标签
  

闽ICP备14008679号