美文网首页硬件&嵌入式C,C++,程序员
C语言硬件操作之位操作相关总结

C语言硬件操作之位操作相关总结

作者: 海牛embed | 来源:发表于2015-09-18 09:05 被阅读280次

【引言】:

        嵌入式开发工程师有别于其他软件开发工程师,最大的区别就是对硬件操作的敏感性,众所周知,硬件的最小描述单位是bit,而软件领域中,我们能表示的最小单位是Byte,原因在本人的课程视频中已经分析过了,如果有其他认识,也欢迎和我交流探讨。

         那么如何通过C语言更好的操作硬件那,我们就会想到对某些bit设置为高电平或者低电平(看看吧,硬件就是这样的呆萌^_^)。那么我们就来给大家简单的总结下在今后开发过程中,常用的位操作方式吧。

        本文,也是本人在教学中,看到很多同学和开发中遇到的问题,进行的总结,如有不妥,欢迎大家共同交流共同进步。

【正文】:

        一、某一个位的操作:

          这个要简单的多,基本的思想就是对对应位进行与和或的操作。比如,我们想对某一组寄存器的第12bit设置为高电平,那么我们就自然想到了:

          unsigned int *addr = (unsigned int *)0xE0100100;

         // 这里我们假设我们操作的寄存器组的基地址是0xE0100100.

         addr[0] |= (0x1<<12);    // 注意硬件的bit计数也是从0开始的哦。

         那么,如果想对某一组寄存器的第12bit变成低电平那,那么我们就会想到:

         addr[0] &= ~(0x1<<12);

         所以,对某一位的操作,是比较简单的,如果还没有理解的,可以看看本人讲的C语言高级课程的视频啊。

         二、对某一块特定区域设置为一个特定的数:

          这种操作,在目前嵌入式开发中,使用的越来越多,因为目前的soc功能越来越多,数字电路的功能选项也非常庞大,再用一个bit代表一种开关状态已经不能满足现在的开发需求了。所以都是某几个bit组合来代表几个功能的选择。比如我想对12bit---15bit这4个bit位设置为1010的话,如果我们还是沿用上一种的方式进行操作,那么想一想会不会出问题那?

          答案很明显,如果我们只是单纯的用“|”操作进行设置1的操作,那么如果之前这4个bit都是1,那么在设置完成后,4个bit还是1,达不到我们的要求,同样的道理,清零也是会出现这个问题。

          那么应该怎么处理那,思路很简单,就是先对这些控制区域清零,然后再置位的方式。代码实现如下:

          unsigned int *addr = (unsigned int *)0x20008000;

          addr[0] &= ~(0xf<<12);

          addr[0] |= (0x6<<12);

【总结】:

         如果我想对4-7bit设置1011,并且对10-13bit设置1100,那么该如何操作那?

相关文章

  • C语言硬件操作之位操作相关总结

    【引言】: 嵌入式开发工程师有别于其他软件开发工程师,最大的区别就是对硬件操作的敏感性,众所周知,硬件的最...

  • 第一章C语言笔记-- 基础概述

    1、C的历史   C语言是一种高级程序语言,可以实现对硬件直接操作,例如如内存地址的操作、对位的操作。UNIX5操...

  • 嵌入式第九天:指针

    c语言相比其他高级语言来说,更接近于对计算机硬件的操作,而指针的应用更是为我们对硬件的操作插上了翅膀,所以指针是嵌...

  • 人生需要规划,学好C语言编程,把握自己的未来,are you r

    C语言和其他高级语言不一样,它的很多操作都是直接面向内存(面向硬件)。困难的是,对于C语言,不论是数据类型、操作符...

  • 1 python简介

    语言简介: python是一种编程语言,同C、java语言类似。C语言是可以用来编写操作系统的贴近硬件的语言,适合...

  • python个人学习——简介,安装

    C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Py...

  • (十一)硬件控制方法

    Windows中,使用C语言等高级编程语言时,很少有能直接控制硬件的指令,因为对硬件的控制是由Windows操作系...

  • 位操作在编程中的应用

    本文内容来自位操作基础篇之位操作全面总结 位操作包括:与(&)、或(|)、异或(^,异为1,同为0)、左移(<<,...

  • 黑猴子的家:Python 简介

    总的来说,编程语言各有千秋。C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充...

  • C 语言学习(5) ---- C语言知识汇总01

    C语言技巧汇总 元素说明常用位运算对齐,set和reset/reverse,取出相应的位等操作C语言常量整数常量,...

网友评论

    本文标题:C语言硬件操作之位操作相关总结

    本文链接:https://www.haomeiwen.com/subject/eypbcttx.html