保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

VxWorks下PC/104-CAN驱动程序设计


typedef struct {

DEV_HDR pCANHDR; /*这个数据结构必须放在设备描述符的最初部分*/

/*其余与驱动有关数据*/

}CAN_DEV; /*CAN设备描述符*/

CAN_DEV can_chan_dev;

STATUS CanDrv(void){

完成驱动的一些初始化;

intconnect(); /*连接所选的IRQ与中断处理函数*/

sysIntEnablePIC(); /*486DX允许中断*/

drv_num=iosDrvInstall(CanOpen,NULL,CanOpen,CanClose,CanRead,CanWrite,CanIoctl);/*将设备驱动例程装入设备列表中*/

}

/*iosDrvInstall()将设备的CAN驱动例程加入设备驱动列表中,7个参数为7个驱动例程的进入点(entry point),如果没有某个例程,则传递NULL。*/

STATUS CanDevCreate(){

完成一些设备初始化

iosDevAdd (&Can_chan_dev.pCANHDR,“can0”,drv_num);/*将设备放入设备驱动列表中*/

}

int CanOpen(CAN_DEV *pCan_Dev,UBYTE *remainder,int flags){

CAN卡硬件复位

CAN卡关中断

CAN卡进入软件复位模式

设置CAN卡工作寄存器,如接收码寄存器和屏蔽码寄存器等

CAN卡开中断和进入操作模式

Return((int)pCan_Dev); /*注意必须返回设备描述结构指针*/

}

int CanRead(int CAN_DEV_ID,UBYTE * buf,int nBytes){

等待信号量(该信号量由中断处理例程释放)

从接收缓冲区读取数据

释放接收缓冲

返回接收数据数量

}

int CanWrite(int CAN_DEV_ID,UBYTE* buf,int nbyte){

查询发送缓冲是否可用

向发送缓冲区写数据

命令发送

查询发送完成标志

返回发送数据数量

}

void interrupt_handle_routin(int arg){

处理中断事件

发送(释放)信号量

《VxWorks下PC/104-CAN驱动程序设计(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/168050.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。