📄 canrcv_snd.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name: CANRcv_snd.c
** Last modified Date: 2007.01.18
** Last Version: 1.0
** Description: CAN 通信程序
**
**--------------------------------------------------------------------------------------------------------
** Created By: 曾维勇
** Created date: 2007.09.16
** Version: 1.0
** Descriptions: The original version 初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by: Ni Likao 倪力考
** Modified date: 2007.11.02
** Version: 1.1
** Description: The second version 第二版
**
*********************************************************************************************************/
#include "config.h"
tCANFrameBuff *pReceFrameBuff; /* 定义帧接收缓冲区指针 */
tCANFrameBuff *pSendFrameBuff; /* 定义帧发送缓冲区指针 */
tCANNodeInfo *pCAN_Node_Info; /* 定义CAN节点数据信息指针 */
/*********************************************************************************************************
** Function name: delay
** Descriptions: 延时函数
** input parameters: j
** output parameters: 无
** Returned value: 无
** Created By: 曾维勇
** Created date: 2007.09.16
**--------------------------------------------------------------------------------------------------------
** Modified by: Ni Likao 倪力考
** Modified date: 2007.11.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void delay (unsigned long j)
{
unsigned long i, x;
for (x = j; x > 0; x--) {
for (i = 80000; i > 0; i--);
}
}
/*********************************************************************************************************
** Function name: main
** Descriptions: 该范例程序演示了通过USB转CAN,开发板与PC机进行CAN通信。波特率为500K.
** input parameters: 无
** output parameters: 无
** Returned value: 无
** Created By: 曾维勇
** Created date: 2007.09.16
**--------------------------------------------------------------------------------------------------------
** Modified by: Ni Likao 倪力考
** Modified date: 2007.11.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main(void)
{
tCANFrame CANFrame;
tCANNodeInfo CAN_Node_Info;
tCANFrameBuff ReceFrameBuff; /* 定义帧接收缓冲区 */
tCANFrameBuff SendFrameBuff; /* 定义帧发送缓冲区 */
pCAN_Node_Info = &CAN_Node_Info;
pReceFrameBuff = &ReceFrameBuff;
pSendFrameBuff = &SendFrameBuff;
/*
* Set the clocking to run directly from the PLL at 25MHz.
*/
SysCtlClockSet(SYSCTL_SYSDIV_8 | SYSCTL_USE_PLL |
SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
CreateCAN(pCAN_Node_Info, CAN0_BASE, CANBAUD_500K, RxMsgObj_ONE,
TxMsgObj_ONE, pReceFrameBuff, pSendFrameBuff); /* 创建软件CAN节点 */
InitCANController(pCAN_Node_Info); /* 初始化CAN节点, */
/* 设置节点波特率 */
EnableCANInt(pCAN_Node_Info); /* 使能CAN中断 */
CANAcceptFilterSet(pCAN_Node_Info, 0x123, MASK, EXT_ID_FILTER); /* 设置节点接收数据过滤 */
while (1) {
while (pReceFrameBuff->ucBufFull != FULL) { /* 缓冲区不满,继续等待接收 */
;
}
/*
* 缓冲区不为空,继续发送
*/
if (CAN_ucReadBuffer(pReceFrameBuff, &CANFrame) != EMPTY) {
SendCANFrame(pCAN_Node_Info, &CANFrame);
}
delay(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -