C 代码修改寄存器

Tags
Linux
ARM
ID
71
 
#include <stdio.h> // 定义模拟的寄存器地址 volatile unsigned int *hardware_register = (unsigned int *)0x10000000; // 定义位操作宏 #define SET_BIT(reg, bit) ((reg) |= (1 << (bit))) #define CLEAR_BIT(reg, bit) ((reg) &= ~(1 << (bit))) int main() { // 模拟硬件寄存器初值 unsigned int reg_value = 0xAA; printf("初始寄存器值: 0x%08X\n", reg_value); // 进行置零操作 CLEAR_BIT(reg_value, 2); printf("置零后寄存器值: 0x%08X\n", reg_value); // 进行置一操作 SET_BIT(reg_value, 5); printf("置一后寄存器值: 0x%08X\n", reg_value); // 模拟写入硬件寄存器 *hardware_register = reg_value; return 0; }
  1. 指针赋值地址的强转;
  1. 用或等于设置位;
  1. 用且等于非清空位;