嵌入式 C 语言基础
一、指针:操作地址的钥匙
嵌入式开发最常做的事,就是读写寄存器地址:
// 点亮 P1.0 口 LED
#define P1 ((volatile unsigned char *)0x90)
*P1 |= 0x01;
volatile 告诉编译器:该地址可能被硬件修改,不要优化掉读写。
二、位运算:寄存器的操作手法
| 操作 | 写法 | 说明 |
|---|---|---|
| 置位 | `REG | = (1 << 3)` |
| 清位 | REG &= ~(1 << 3) |
位与取反 |
| 翻转 | REG ^= (1 << 3) |
异或 |
| 判断 | if (REG & (1 << 3)) |
读某一位 |
三、结构体指针的寄存器映射
MCU 厂商头文件把外设映射为结构体,如 GPIOA->ODR,本质仍是地址偏移访问。
小结
把“内存地址 + 位”这两件事想透,单片机代码就有了骨架。