C的小问题
一、STM 32的小知识点
1. 最常用的位操作(清零与位设置)
复习
- “与或非”运算
&=
与|=
运算
代码
GPIOA->CRL &= 0xFFFFFF0F; // 4~7位清零
GPIOA->CRL |= 0x00000040; // 4~7位设为1.设置相应位置的值
2. 移位运算符
- 左移
- 相当于乘以2的n次方,最低位补0;
- 右移
- 相当于除以2的n次方,最高位正数补1,负数补0;
代码
/* 将 1 左移 pinpos 位 */
GPIOx->BSRR = (((unit32_t)0x01)<<pinpos); // 将pinpos位设置为1
3. 复位与时钟控制
- 系统复位(所有寄存器)
- 上电复位(除备份区外,所有的寄存器)
- 备份域复位
4. 使能时钟(enable)
- 时钟如同单片机的心脏,使能了时钟,才能工作。那么这个“使能”究竟什么意思呢?
实际上,使能的英语就是enable,打开的意思。
相对地,stm32 默认的时钟状态是 disable,关闭的,不工作。
- 说明
stm32 有一种时钟门控技术,disable状态下不工作,可以省电,所以,我们需要使用某个GPIO口的时候,一定要先调用使能函数,让它上电工作。
- 补充
端口重映射还需要 AFIO 口时钟
。
- STM 32 的几种时钟