接触了一阵子的STM32函数库,使用起来挺方便的,但是很少有处理器会有函数库,大部分情况下还是要自己来对寄存器进行操作,所以还是不要生疏了对寄存器的操作。
对寄存器的操作有时候要考虑对其不同的位进行先后顺序不同的设置,因为这样可能达不到预期的效果,这个不太好总结,但是对寄存器操作的方法是固定的。
在这之前,首先要明白逻辑运算符(! && ||)和位运算符(<< >> ~ | ^&)的区别,对寄存器的操作使用的是位运算符,逻辑运算符一般用于在程序中判断逻辑中使用。
例如 定义一个8位的寄存器(0xf0是寄存器的地址):
#defineREG0xFF
1)对单个的位进行赋值
(1)将寄存器REG的第5位置“1”
REG|=(1<< 5);
(2)将寄存器REG的第5位清零
REG&=~(1<< 5);
(3)将寄存器REG的第3和第5位置“1”
REG|=(1<< 5) | (1 << 3);
(4)将寄存器REG的第3和5位清零
REG&=~((1<< 5) | (1 << 3) );
该段总结如下:
将某位置1,移位取反后使用位运算'|'
将某位置0,移位取反后,使用位运算'&'
2)直接赋值
(1)将寄存器REG的1、2、3、5、7位置“1”
REG=0x5E;
(即给寄存器REG1赋值为10101110,这种方法多在初始化中使用)
(2)分别将寄存器REG的1、3、5、7位置“1”,0、2位置“0”
u8temp;
tmep=REG;
temp&=~0x01;//等价于 temp &=~(1<<0) 将第0位清零
temp|=(1<< 1);
temp&=~(1<< 2);
temp|=(1<< 3);
temp|=(1<< 5);
temp|=(1<< 7);
REG=temp;
上一篇:三种串口接收不定长数据方法详解
下一篇:无线节水滴灌自动控制系统的设计方案
设计资源 培训 开发板 精华推荐
- 适用于工业应用的 C8051F523 MCU 的 C8051F52x-53x-DK、8051 开发系统
- 0.75V 直流转直流单路卫星广播电源
- 用于基本配置的 ADR365A、5V 低功耗、低噪声电压基准的典型应用
- 队队队工程
- LTC1748CFW 演示板,14 位/80 Msps 低噪声 ADC,Ain > 40MHz
- 410_UFI_HUB
- 电子熔断器(eFuse)IC TCKE805系列的应用电路
- 使用符合 EN55022 B 类(24Vin 和 48Vin,单输出)EMC 滤波的 RP40-4824DFR DC/DC 转换器的典型应用
- L7806A 远程关断稳压器的典型应用
- TS2576CM533 RN 3A、3.3V、52KHz 降压开关稳压器的典型(固定输出电压版本)应用