⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canrcv_snd.c

📁 easyARM8962 CAN通讯操作实验源码
💻 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 + -