C语言如何实现读写SOC中的寄存器

SOC、MCU、MPU等处理芯片,芯片内部有大量的寄存器,为了实现对应的功能,需要操作寄存器。对于汇编语言,可以使用汇编指令操作寄存器,同样,C语言也具备操作寄存器能力。

一、操作单个寄存器

比如需要初始化寄存器LCDCTL,该寄存器地址为0xD0008000,方法如下所示:

(*(volatile *)D0008000) = 0x0;

解析:1、(volatile *)D0008000 表示该地址;

2、*(volatile *)D0008000 表示该地址存放的值;

二、操作寄存器组

比如SOC中的LCD module,控制该module包含一组寄存器,经常把该组寄存器放到一个结构体中。

1)结构体

struct LCD_MODULE {

volatile uint32 LCD_CONTROL;  //0xD0000000

volatile uint32 LCD_INT;         //0xD0000004

volatile uint32 LCD_MAST;    //0xD0000008

volatile uint32 LCD_PENDING; //0xD000000B

};

2)程序片段:初始化LCD模块

struct LCD_MODULE * const lcd = (struct LCD_MODULE * ) 0xD0000000;

lcd->LCD_CONTROL = 0x0;

C语言如何实现读写SOC中的寄存器相关推荐

  1. c实现多语言编程,C/C++编程中多国语言处理

    多国语言的存在.不同语言操作系统的存在,使得针对多语言的设计颇费周章,在编码上所付出的工作量也是可观的.所谓编码的问题,归结起来,就是二进制的编码以何种编码格式进行解析的问题.特别是在硬盘文件和内存数 ...

  2. C语言之文件读写探究(七):随机读写文件

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  3. C语言之文件读写探究(六):fscanf、fprintf(格式化读写文件)

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  4. C语言之文件读写探究(四):fwrite、fread(一次读写一块数据(二进制操作))

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  5. C语言之文件读写探究(三):fputs、fgets、feof(一次读写一行字符(文本操作))

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  6. C语言之文件读写探究(二):fputc、fgetc、feof(一次读写一个字符(文本操作))

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  7. C语言之文件读写探究(一):fopen、fclose(文件的打开和关闭)

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  8. keil4如何将c语言转换成汇编语言_Keil 中关于C语言编译生成汇编代码函数名规则...

    在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函 ...

  9. C语言读取文件时txt中的汉字出现乱码的解决方案

    C语言课程设计要求使用文件,然后在我进行文件操作的时候发生了一点小小的意外,读写文件中的汉字显示的居然是乱码. 经过我的一番查找之后发现居然是txt编码方式的问题. 为使计算机支持更多语言,通常使用 ...

最新文章

  1. java里冒泡排序编程案例_java编程题:用Java实现一个冒泡排序算法
  2. LeetCode 11 Container With Most Water
  3. border-radius的兼容问题
  4. 喜报!神策数据荣获“2019 银行业数字营销大赛”智能营销类金奖
  5. python中的json_python中json的使用
  6. C#使用ping命令
  7. mysql 5.7 多实例_MySQL 5.7--------多实例部署最佳实战
  8. PHP 实现列出目录的内容
  9. MySQL安装成功后dos命令行设置密码
  10. python主要数据变量_python的数据类型和变量
  11. P-Called-Party-ID头域
  12. xlsread服务器出现意外情况
  13. wpa_supplicant工具移植
  14. 华丽成长为IT高富帅、IT白富美(五)
  15. simulink解微分方程
  16. 机动车驾驶证扣分查询
  17. 【SandQuant 量化投资】哈里·马科维茨:投资组合的选择
  18. linux 模拟误码率,基于System View的比特误码率测试的仿真研究
  19. 利用scrapy+splash+redis实现对JS动态生成网页的增量爬取
  20. 小白的Construct 2(伪)技术博客

热门文章

  1. 白话学习防火墙 2 之IPS和IDS
  2. 2021年电工(高级)考试内容及电工(高级)作业考试题库
  3. H5 如何唤起百度地图 App
  4. 宝马AWS量子计算挑战总决赛:QCI展示量子应用
  5. 易语言大漠插件模块制作后台设置后台绑定窗口句柄
  6. 多人在线游戏技术难点分析
  7. 计算机取模运算原理,什么是取模运算?
  8. 隐私计算技术解读:可信执行环境(TEE)概要及应用
  9. RJM8L151在烟雾报警器系统中的应用
  10. 神奇的计算机世界教案,神奇的计算机世界.doc