没有合适的资源?快使用搜索试试~ 我知道了~
1553b rt模式bu61580.c.txt
2星 需积分: 50 71 下载量 46 浏览量
2017-12-18
13:07:24
上传
评论 4
收藏 18KB TXT 举报
温馨提示
试读
12页
bu61580.c 包含bu-61580的初始化,发送,接收部分的代码
资源推荐
资源详情
资源评论
/*
Description
*/
/* includes */
#include "bu61580.h"
// 1553b消息块定义
BUMSGIFM BUMSG;
BUBUFFER BUCHAMSGBUF,
BUCHBMSGBUF;
/*******************************************************************************
*
* buSend - 1553B发送函数,根据发送长度将源数据取进发送FIFO缓冲区内或
* buffer,然后根据具体情况是否打开中断,完成发送,大数据量时发送过程在中断服务程序中完成,在多于64字节时,每次发
* 送64字节,少时则全部发送.
*
* 返回值 - 0 : OK;
* 2 : ERR1(通道选择错误);
* 3 : ERR2(缓冲区满);
*
* 参数描述 -
* int buSend
* (
* unsigned int channel, /@ 各通道选择,值为: BUCHANNELA,BUCHANNELB @/
* unsigned int subAddr, /@ 所选通道子地址:BUSUBADDR0-BUSUBADDR31 @/
* unsigned int * srcAddr, /@ 被发送数据的源地址 @/
* int length /@ 用户要发送数据的长度(1-32个16 bits) @/
* )
Description
*/
/* includes */
#include "bu61580.h"
// 1553b消息块定义
BUMSGIFM BUMSG;
BUBUFFER BUCHAMSGBUF,
BUCHBMSGBUF;
/*******************************************************************************
*
* buSend - 1553B发送函数,根据发送长度将源数据取进发送FIFO缓冲区内或
* buffer,然后根据具体情况是否打开中断,完成发送,大数据量时发送过程在中断服务程序中完成,在多于64字节时,每次发
* 送64字节,少时则全部发送.
*
* 返回值 - 0 : OK;
* 2 : ERR1(通道选择错误);
* 3 : ERR2(缓冲区满);
*
* 参数描述 -
* int buSend
* (
* unsigned int channel, /@ 各通道选择,值为: BUCHANNELA,BUCHANNELB @/
* unsigned int subAddr, /@ 所选通道子地址:BUSUBADDR0-BUSUBADDR31 @/
* unsigned int * srcAddr, /@ 被发送数据的源地址 @/
* int length /@ 用户要发送数据的长度(1-32个16 bits) @/
* )
*
*/
int buSend
(
unsigned int channel,
unsigned int subAddr,
unsigned int * srcAddr,
int length)
{
int i = 0;
unsigned int * subAddrDataBlock;
unsigned int subAddrBase;
if(channel == BUCHANNELA) subAddrBase = BUM500;
else if(channel == BUCHANNELB) subAddrBase = BUM800;
else return ERR1;
if((length < BUZERO) | (length > BUMSGDATANUM) | ((int)subAddr < BUSUBADDR0) | ((int)subAddr > BUSUBADDR31))
return ERR3;
subAddrDataBlock = (unsigned int *)((BUMEM | subAddrBase) + (subAddr * BUMSGDATANUM));
for(i = 0 ; i < BUMSGDATANUM ; i++)
{
ioOut((unsigned int)(subAddrDataBlock +i ) , BUZERO);
if(i < length) ioOut((unsigned int)(subAddrDataBlock + i) , *(srcAddr + i));
}
*/
int buSend
(
unsigned int channel,
unsigned int subAddr,
unsigned int * srcAddr,
int length)
{
int i = 0;
unsigned int * subAddrDataBlock;
unsigned int subAddrBase;
if(channel == BUCHANNELA) subAddrBase = BUM500;
else if(channel == BUCHANNELB) subAddrBase = BUM800;
else return ERR1;
if((length < BUZERO) | (length > BUMSGDATANUM) | ((int)subAddr < BUSUBADDR0) | ((int)subAddr > BUSUBADDR31))
return ERR3;
subAddrDataBlock = (unsigned int *)((BUMEM | subAddrBase) + (subAddr * BUMSGDATANUM));
for(i = 0 ; i < BUMSGDATANUM ; i++)
{
ioOut((unsigned int)(subAddrDataBlock +i ) , BUZERO);
if(i < length) ioOut((unsigned int)(subAddrDataBlock + i) , *(srcAddr + i));
}
剩余11页未读,继续阅读
资源评论
- qytiger0072023-07-11.h文件都不放出来啊,真的没啥用
- qq_428876912019-04-11代码不全,没大价值
toothpickii
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功