资源简介
自己编写的基于linux在mini2440开发板上运行的温湿度传感器驱动代码,可以正常使用码,包括已经编译好的文件和测试程序
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_NAME “dht11“
static char DHT11_read_byte ( void )
{
char DHT11_byte ;
unsigned char i ;
unsigned char temp ;
DHT11_byte = 0 ;
for ( i = 0 ; i < 8 ; i ++ )
{
temp = 0 ;
while ( ! (s3c2410_gpio_getpin ( S3C2410_GPF(0) ) ) )
{
temp ++ ;
if ( temp > 12 )
return 1 ;
udelay ( 5 ) ;
}
temp = 0 ;
while ( s3c2410_gpio_getpin ( S3C2410_GPF(0) ) )
{
temp ++ ;
if ( temp > 20 )
return 1 ;
udelay ( 5 ) ;
}
if ( temp > 6 )
{
DHT11_byte <<= 1 ;
DHT11_byte |= 1 ;
}
else
{
DHT11_byte <<= 1 ;
DHT11_byte |= 0 ;
}
}
return DHT11_byte ;
}
static ssize_t DHT11_read ( struct file* filp char __user* buf size_t count loff_t* f_pos )
{
unsigned char DataTemp;
unsigned char i;
unsigned char err;
char tempBuf[5];
// loff_t pos = *f_pos ;
err = 0 ;
s3c2410_gpio_cfgpin ( S3C2410_GPF(0) S3C2410_GPIO_OUTPUT );
s3c2410_gpio_setpin ( S3C2410_GPF(0) 0 );
msleep ( 18 );
// mdelay ( 18 );
s3c2410_gpio_setpin ( S3C2410_GPF(0) 1 );
udelay ( 40 );
s3c2410_gpio_cfgpin ( S3C2410_GPF(0) S3C2410_GPIO_INPUT );
if ( !err )
{
DataTemp = 10 ;
while ( !( s3c2410_gpio_getpin ( S3C2410_GPF(0) ) ) && DataTemp )
{
DataTemp --;
udelay ( 10 );
}
if ( !DataTemp )
{
err = 1;
count = -EFAULT;
}
}
if ( !err )
{
DataTemp = 10 ;
while ( ( s3c2410_gpio_getpin ( S3C2410_GPF(0) ) ) && DataTemp )
{
DataTemp --;
udelay ( 10 );
}
if ( !DataTemp )
{
err = 1;
count = -EFAULT;
}
}
if ( !err )
{
for ( i = 0; i < 5; i ++ )
{
tempBuf[i] = DHT11_read_byte () ;
}
DataTemp = 0 ;
for ( i = 0; i < 4; i ++ )
{
DataTemp += tempBuf[i] ;
}
if ( DataTemp != tempBuf[4] )
{
count = -EFAULT;
}
// if ( count > ( 5 - pos ) )
// {
// count = 5 - pos ;
// }
if ( count > 5 )
{
count = 5 ;
}
// pos += count;
// if ( copy_to_user ( buf tempBuf + *f_pos count ) )
if ( copy_to_user ( buf tempBuf count ) )
{
count = -EFAULT ;
}
// *f_pos = pos;
}
s3c2410_gpio_cfgpin ( S3C2410_GPF(0) S3C2410_GPIO_OUTPUT );
s3c2410_gpio_setpin ( S3C2410_GPF(0) 1 );
return count;
}
static struct file_operations dev_fops = {
.owner = THIS_MODULE
.read = DHT11_read
};
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR
.name = DEVICE_NAME
.fops = &dev_fops
};
static int __init DHT11_init_module ( void
相关资源
- UBUNTU LINUX教程
- linux内核裁剪具体步骤的图解及细解
- LINUX-FTP服务包 vsftpd-2.0.1-5.src.rpm
- 大恒相机QT例程LINUX
- vnc-3.3.7-x86_linux
- SecureCRTTomcat工程发布到linux系统上
- dnw-linux-v1.01.tar.gz
- Linux下基于epoll_线程池高并发服务器实
- udp 多线程实现多客户端并发,并采用
- AD9361驱动
- DHT11传感器
- Linux/Windows局域网远程开机唤醒的例程
- linux系统调用表
- ap6255 firmware
- Linux内核视频教程.txt
- linux 语音实时对讲
- Linux网络编程(四)——epoll+多线程实
- LINUX操作系统文件系统设计实验代码
- WSL2使用xrdp连接xfce4桌面详细配置教程
- chat_room.zip
- 跟老男孩学linux三剑客命令V1.5.rar
- petalinux2018.3.txt
- 基于嵌入式linux系统下的画板小程序
- linux下使用原始套接字抓包并发现网络
- linux内核解析精品电子书大全
- linux-在shell脚本中使用加密密码的轻量
- linux-极路由闪讯netkeeper安装
- 嵌入式系统/ARM技术中的基于嵌入式
- linux_c_qq语音聊源代码
- linux 字符设备驱动程序
评论
共有 条评论