现在位置: 首页

求一个unsigned int 数的二进制表示中有多少个1?

2015年12月15日 技术文章  ⁄ 共 3364字 求一个unsigned int 数的二进制表示中有多少个1?已关闭评论 ⁄ 阅读 1,887 次
今天在吹牛逼群里看到有人发了这么一个问题,并发出了好几种解决放法,遂写文章记录下来。 这是一道面试题可以用以下的一些方案。 第一种是很容易想到的采用循环的方式并且与1进行位与运算,具体代码如下。 unsigned int GetBitNumOfOne_ByLoop1(unsigned int nValue) { const unsigned int nNumOfBitInByte = 8; unsigned int nBitMask = 1; unsigned int nBitNum = 0; for(unsigned int i = 0 ; i < sizeof(nValu...
阅读全文

Linux输入子系统(Input Subsystem)

2015年12月13日 驱动开发  ⁄ 共 2029字 Linux输入子系统(Input Subsystem)已关闭评论 ⁄ 阅读 1,528 次
input子系统概述 输入设备(如按键,键盘,触摸屏,鼠标等)是典型的字符设备,其一般的工作机制是低层在按键,触摸等动作发生时产生一个中断(或驱动通过timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键值,坐标等数据。 在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件...
阅读全文

Tiny4412 Linux驱动之按键(定时器防抖动)

2015年12月12日 驱动开发  ⁄ 共 1288字 Tiny4412 Linux驱动之按键(定时器防抖动)已关闭评论 ⁄ 阅读 1,604 次
上一篇文章 《Tiny4412 Linux驱动之按键(使用中断)》使用中断的方式写了按键检测驱动程序,但是有一个问题:有时候按下一次按键有可能输出两条信息的情况: 按键抖动 如上图所示,按下了一次,缺打印了两次,这是由按键抖动引起的。 按键消抖的原理 按键抖动示意图 我们平常所用的按键为机械弹性开关,由于触点的弹性作用,按键在闭合时不会马上稳定的接通,而是有一段时间的抖动,在断开时也不会立即断开。抖动时间由按键的...
阅读全文

linux内核container_of()宏详解

2015年12月08日 技术文章  ⁄ 共 2773字 linux内核container_of()宏详解已关闭评论 ⁄ 阅读 1,801 次
一、简介 Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 二、接口 container_of(ptr, type, member) ptr:表示结构体中member的地址 type:表示结构体类型 member:表示结构体中的成员 通过ptr的地址可以返回结构体的首地址 三、实现 /** * container_of - cast a member of a s...
阅读全文

Tiny4412 Linux驱动之按键(使用中断)

2015年12月05日 驱动开发  ⁄ 共 781字 Tiny4412 Linux驱动之按键(使用中断)已关闭评论 ⁄ 阅读 2,225 次
接着上一个实验 《Tiny4412 Linux驱动之按键(使用查询方式)》 ,这一节使用中断的方式进行按键的检测,Linux下的中断体系结构前面也发了好几篇文章,写的都不错挺详细,大家可以看看,链接如下。 Linux内核异常处理体系结构详解(一) Linux内核异常处理体系结构详解(二) 下面开始今天的正文,使用中断的方式检测按键, 还是一共三个文件,1驱动相关:. keyIrq_drv.c  Makefile 2.测试程序 : key_test_irq.c 实验步骤: 驱...
阅读全文
×