• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-07-20
  • 语言: 其他
  • 标签: stm32  LIN  通信协议  

资源简介

LIN从模式代码.以STM32F103为MCU使用的是UCOS-II系统.此段代码包括LIN的从模式的初始化、接收、回应等。利用的是串口的LIN模式中断。带有详细的中文注释。希望对你有所帮助。

资源截图

代码片段和文件信息

/*
**********************************************************************************************
*                                                      DVG02项目的LIN总线分析文件
* 文件名称: LIN.c
* 版本号     : V0.9
* 编写人     : Rock.Wu
* 编写日期:2012-08-20
**********************************************************************************************
*/

#define  LIN_MODULE
/*******************************包含的文件******************************/
#include 
#include 
#include 
/*******************************宏定义************************************/
#define BIT(AB)      ((A>>B)&0x01)   
#define LIN_RXCMD_BUF_SIZE  5      /*接受缓存大小10个报文*/
/*******************************数据类型定义***************************/
/*******************************变量定义*********************************/
 enum LinState{ 
         IDLE 
         SYNCH
         ID_LEN 
         DATA_GET
         CHECKSUM
   };

 enum LinErrState{ 
         NO_ERR 
         SYNC_ERR
         ID_ERR 
         CHKSUM_ERR
   };

 static INT8U AnalysePlus4 = IDLE;
#if (LIN_LEN_MODE == 0)
      static const INT8U LIN_Len[4]={2 2 4 8};
#endif
 static LINDataType TempLinData;
 LINDataType LINRxMsgBuf[LIN_RXCMD_BUF_SIZE];
 COMM_LIN_Q LIN_RxMsg;
 extern CMD_LINType  const  LIN_CMD[LIN_ID_NUM];
 static INT8U  SendDataLen =0;
 static INT8U  LinSendBuf[9]={000000000};
/*******************************函数声明*********************************/
 static void  LIN_IRQ_Handler(void);
 static void  LIN_Rx_Analyse(INT8U LIN_Data);
/******************************************************************************
** 功能描述: 初始化UART4用于与LIN通讯
** 输      入: 
** 全局变量: UART1Sem
** 调用模块: 
** 编写人     : Rock.Wu
** 编写日期:2012-09-14
*******************************************************************************/
void BSP_LIN_Init(void)
{
       USART_InitTypeDef  USART_InitStructure;/*串口设置恢复默认参*/
       GPIO_InitTypeDef GPIO_InitStructure;
       INT8U ij;
 
       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC ENABLE);
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
       GPIO_Init(GPIOC &GPIO_InitStructure);
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
       GPIO_Init(GPIOC &GPIO_InitStructure);

       RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4 ENABLE);
       USART_InitStructure.USART_BaudRate = 19200;
       USART_InitStructure.USART_WordLength = USART_WordLength_8b;
       USART_InitStructure.USART_StopBits = USART_StopBits_1;
       USART_InitStructure.USART_Parity = USART_Parity_No;
       USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
       USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
       USART_Init(UART4 &USART_InitStructure);
 
       USART_LINBreakDetectLengthConfig(UART4 USART_LINBreakDe

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2552  2012-10-23 10:00  LIN.h
     文件       12190  2012-10-23 18:23  LIN.c

评论

共有 条评论