32单片机 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)
//再去寻找对应端口偏移量,如下图
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值