首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   μC/OS-II的多任务信息流与CAN总线驱动      ★★★ 【字体: 】  
μC/OS-II的多任务信息流与CAN总线驱动
收集整理:佚名    来源:本站整理  时间:2009-01-10 22:31:09   点击数:[]    

由SJA1000控制器逐个取出往外发。从CAN口接收数据时,往往等收到若干个字节后才需要CPU进行处理,所以这些预收的数据可以先存于缓冲区。缓冲区可以设置收到若干个字节后再中断CPU,这样避免了因为CPU的频繁中断而降低系统的实时性。

  在对缓冲区读写的过程中,经常会遇到想发送数据时,发送缓冲已满;想去读时,接收缓冲却是空的。对于用户程序端,可以采用查询工作方式,即放弃无法读写的操作,然后再频繁地去尝试这个操作直到成功,这样程序效率显然降低。如果引入读、写两个信号量分别对缓冲区两端的操作进行同步,问题将迎刃而解。用户任务想写但缓冲区满时,在信号量上睡眠,让CPU运行别的任务,待ISR从缓冲区读走数据后唤醒此睡眠的任务;类似地,用户任务想读但缓冲区空时,也可以在信号量上睡眠,待外部设备有数据来了再唤醒。由于μC/OS-II的信号量提供了超时等待机制,CAN口当然也具有超时读写能力。

  带缓冲和信号量的CAN口接收和发送部分见本刊网络补充版(http://www.dpj.com.com)。

  接口函数总结如下。

void CanInitHW(UI segment,BYTE irq0,BYTE IRQ1)

/*设置SJA1000控制器端口中断向量*/

int canReleaseHW() /* 清除SJA1000控制器端口中断向量*/

int canSendMsg( CANBYTE port, MSG_STRUCT msg)

/* 向定制SJA1000控制器端口发送数据*/

int canReceiveMsg( CANBYTE port, MSG_STRUCT msg_ptr)

/*从定制SJA1000控制器端口接收数据

int canConfig( CANBYTE port, CAN_STRUCT can)

/*初始化和配置SJA1000控制器 */

int canNormalRun( CANBYTE port )

/*设置SJA1000正常(Normal)运行模式 */

int canReset( CANBYTE port )

/* SJA1000控制器端口重新设置,缓冲区置位0xff*/

CANBYTE can0r( CANBYTE addr)

/*读取SJA1000控制器端口0的定制寄存器的值 */

CANBYTE can1r( CANBYTE addr)

/*读取SJA1000控制器端口1的定制寄存器的值 */

接收和发送数据缓冲区数据结构定义:

typedef struct {

INT16U RingBufRxCtr; /* 接收缓冲中字符数目 */

OS_EVENT RingBufRxSem; /* 接收信号量 */

INT8U RingBufRxInPtr; /* 接收缓冲中下一字符的写入位置 */

INT8U RingBufRxOutPtr; /* 接收缓冲中下一待读出字符的位置 */

INT8U RingBufRx[CAN_RX_BUF_SIZE]; /* 接收环形缓冲区*/

INT16U RingBufTxCtr;

/* 发送缓冲中字符数目 */

OS_EVENT *RingBufTxSem; /* 发送信号量 */

INT8U *RingBufTxInPtr;

/* 发送缓冲中下一字符的写入位置 */

INT8U *RingBufTxOutPtr;

/* 发送缓冲中下一待读出字符的位置 */

INT8U RingBufTx[CAN_TX_BUF_SIZE]; /* 发送环形缓冲区*/

} CAN_RING_BUF;

结 语

  本文是在嵌入式计算机技术领域的应用背景下提出的,整个工程开发结束以后,系统正常运作时间超过27天。希望本文的提出对开发嵌入式操作系统的技术人员能有所帮助,同时也希望同一领域的开发人员共同探讨、共同发展



上一页  [1] [2] [3] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:三星ARM处理器S3C4510B的HDLC通道使用及编程

  • 下一篇文章:SHARC阵列板的VMEBus通信分析与应用
  • 返回上一页】【打 印】【关闭窗口
    中查找“μC/OS-II的多任务信息流与CAN总线驱动”更多相关内容 5VAR论文频道
    中查找“μC/OS-II的多任务信息流与CAN总线驱动”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››Country music高中英语教案
  • ››Computer-教学教案
  • ››Country music-教学教案
  • ››Country music
  • ››Come to the party-教学教案
  • ››Could you help me, please? Lesso...
  • ››Could you help me, please? Lesso...
  • ››Could you help me, please? Lesso...
  • ››Could you help me, please? Lesso...
  • ››Could you help me, please? Lesso...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .