91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于ARM9-mini2440平臺,基于linux2.6.32內核,hc-sr04超聲波驅動及應用源碼,采用中斷方式驅動兩路超聲波模塊,請多指教,多多交流~

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?///用于中斷相關的
#include?//copy_to_user函數,?從內核區讀數據到用戶區
#include?
#include?
#include?
#include?
#include?//用于混合型設備驅動
#include?
#include?

#define?DEVICE_NAME?“sr04_driver“?//設備名為led_driver
#define?EFALUT?1
/*定義控制命令****************/
#define?SR04_MAGIC?‘k‘?
#define?sr04_on??_IO(SR04_MAGIC?1)?//打開SR04命令
//#define?sr04_on??2?//打開SR04命令
/*超聲波相關數據結構和變量的定義和聲明****************/
static?unsigned?long?sr04_table?[]?=?{//超聲波trig引腳列表
??S3C2410_GPF(2)
??S3C2410_GPF(3)
};

struct?sr04_irq_desc?{
????int?irq;//中斷號
????int?pin;//對應硬件的某個管腳
????int?pin_setting;//管腳的設置,一般雙態,?輸入或輸出
????int?number;//序號
????char?*name;?//對應的管腳名稱
};

static?struct?sr04_irq_desc?sr04_irqs?[]?=?{//聲明了兩個超聲波中斷
????{IRQ_EINT4?S3C2410_GPF(4)??S3C2410_GPF4_EINT4??0?“SR04_0“}//超聲波0
????{IRQ_EINT5?S3C2410_GPF(5)??S3C2410_GPF5_EINT5??1?“SR04_1“}//超聲波1
};
static?DECLARE_WAIT_QUEUE_HEAD(sr04_waitq);//等待隊列當sr04沒有觸發中斷時,如果有進程調用sr04_read函數,它將休眠
/*定義時間函數相關結構體*****************************/
struct??timeval?start?[2];
struct??timeval?end?[2];
/****************************************************/
static?volatile?int?time_lag?[]?=?{00};//聲明變量用來保存時間差值
static?volatile?int?ev_press?=?0;//中斷事件標志?中斷服務程序將它置1,sr04_read將它清0
static?volatile?int?sr04_flag?[]?=?{00};//超聲波計時標志“0“獲取開始計時時間,“1”獲取結束計時時間,兩次時間差為計算所需時間值
static?volatile?int?last_echo_value?[]?=?{00};//sr04超聲波echo引腳的上一次電平值(初始值)
static?volatile?int?current_echo_value?[]?=?{00};//sr04超聲波echo引腳的當前電平值
/*sr04中斷處理函數(獲取時間差值)****************/
static?irqreturn_t?sr04_interrupt(int?irq?void?*dev_id){//sr04中斷函數(回調函數)
????struct?sr04_irq_desc?*sr04_irqs?=?(struct?sr04_irq_desc?*)dev_id;
????current_echo_value[sr04_irqs->number]?=?s3c2410_gpio_getpin(sr04_irqs->pin);//讀取超聲波echo管腳,判斷高低電平
????if?(current_echo_value[sr04_irqs->number]?!=?last_echo_value[sr04_irqs->number])?{//?如果超聲波echo管腳電平有改變
??????if(sr04_flag[sr04_irqs->number]==0){
??????do_gettimeofday(&start[sr04_irqs->number]);//獲取開始計時時間
??????sr04_flag[sr04_irqs->number]?=?1;//超聲波計時標志置為“1“表示下次中斷的發生則獲取結束計時時間
??????last_echo_value[sr04_irqs->number]?=?current_echo_value[sr04_irqs->number];//更新last_echo_value的電平值
??????}
??????else{
??????do_gettimeofday(&end[sr04_irqs->number]);//獲取開始計時時間
??????time_lag[sr04_irqs->number]?=?(end[sr04_irqs->number].tv_usec-start[sr04_irqs->number].tv_usec);//獲取時間差值,用于計算距離
??????//printk(“sr04.No:%d???????%d?us\n“sr04_irqs->numbertime_lag[sr04_irqs->number]);
??????sr04_flag[sr04_irqs->number]?=?0;//超聲波計時標志置為“0“表示下次中斷的發生則獲取開始計時時間
??????last_echo_value[sr04_irqs->number]?=?current_echo_value[sr04_irqs->number];//更新last_echo_value的電平值
??????}
??????ev_press?=?1;
??????wake_up_interruptible(&sr04_waitq);??????
????}
????
???

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????.....H.???????338??2015-01-07?14:18??sr04_driver_v1\.sr04_driver.ko.cmd

????.....H.?????15892??2015-01-07?14:18??sr04_driver_v1\.sr04_driver.mod.o.cmd

????.....H.?????24604??2015-01-07?14:18??sr04_driver_v1\.sr04_driver.o.cmd

????.......???????111??2015-01-07?14:18??sr04_driver_v1\.tmp_versions\sr04_driver.mod

?????文件????????337??2014-12-31?17:24??sr04_driver_v1\Makefile

????.......?????????0??2015-01-07?14:18??sr04_driver_v1\Module.symvers

????.......????????63??2015-01-07?14:18??sr04_driver_v1\modules.order

?????文件???????8723??2015-01-16?17:39??sr04_driver_v1\sr04_driver.c

????.......??????5380??2015-01-07?14:18??sr04_driver_v1\sr04_driver.ko

????.......???????444??2015-01-07?14:18??sr04_driver_v1\sr04_driver.mod.c

????.......??????1496??2015-01-07?14:18??sr04_driver_v1\sr04_driver.mod.o

????.......??????4684??2015-01-07?14:18??sr04_driver_v1\sr04_driver.o

?????文件????????108??2014-12-27?20:19??sr04_test\Makefile

?????文件??????15095??2015-01-07?15:30??sr04_test\sr04

?????文件????????927??2015-01-07?15:28??sr04_test\sr04.h

?????文件???????6407??2015-01-07?15:32??sr04_test\sr04_test.c

?????文件????????162??2015-01-16?17:43??readme.txt

????...D.H.?????????0??2015-01-07?14:18??sr04_driver_v1\.tmp_versions

?????目錄??????????0??2015-01-07?14:18??sr04_driver_v1

?????目錄??????????0??2015-01-07?15:30??sr04_test

-----------?---------??----------?-----??----

????????????????84771????????????????????20


評論

共有 條評論