www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀] 1,開發(fā)環(huán)境 1,適用芯片:STM32F4部分芯片 2,固件庫:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 3,IDE:MDK5172,驅(qū)動源碼 CAN.h文件/***************************************************************

1,開發(fā)環(huán)境

1,適用芯片:STM32F4部分芯片

2,固件庫:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0

3,IDE:MDK517


2,驅(qū)動源碼

CAN.h文件

/****************************************************************

* Copyright (C) 2016, XinLi, all right reserved.

* File name: CAN.h

* Date: 2016.11.30

* Description: CAN Driver

*****************************************************************/

#ifndef __CAN_H

#define __CAN_H

/****************************************************************

* Header include

*****************************************************************/

#include "stm32f4xx.h"

/****************************************************************

* Macro definition

*****************************************************************/

#define CAN1_FILTER_FIFO CAN_Filter_FIFO0

#define CAN2_FILTER_FIFO CAN_Filter_FIFO0

#if defined(STM32F413_423xx)

#define CAN3_FILTER_FIFO CAN_Filter_FIFO1

#endif /* STM32F413_423xx */

#define CAN1_FIFO CAN_FIFO0

#define CAN2_FIFO CAN_FIFO0

#if defined(STM32F413_423xx)

#define CAN3_FIFO CAN_FIFO1

#endif /* STM32F413_423xx */

/********************** CAN1 Configuration **********************/

#define RCC_AHB1Periph_CAN1_Tx RCC_AHB1Periph_GPIOA

#define RCC_AHB1Periph_CAN1_Rx RCC_AHB1Periph_GPIOA

#define GPIO_CAN1_Tx GPIOA

#define GPIO_CAN1_Rx GPIOA

#define GPIO_Pin_CAN1_Tx GPIO_Pin_12

#define GPIO_Pin_CAN1_Rx GPIO_Pin_11

#define GPIO_PinSource_CAN1_Tx GPIO_PinSource12

#define GPIO_PinSource_CAN1_Rx GPIO_PinSource11

/****************************************************************/

/********************** CAN2 Configuration **********************/

#define RCC_AHB1Periph_CAN2_Tx RCC_AHB1Periph_GPIOB

#define RCC_AHB1Periph_CAN2_Rx RCC_AHB1Periph_GPIOB

#define GPIO_CAN2_Tx GPIOB

#define GPIO_CAN2_Rx GPIOB

#define GPIO_Pin_CAN2_Tx GPIO_Pin_13

#define GPIO_Pin_CAN2_Rx GPIO_Pin_12

#define GPIO_PinSource_CAN2_Tx GPIO_PinSource13

#define GPIO_PinSource_CAN2_Rx GPIO_PinSource12

/****************************************************************/

/********************** CAN3 Configuration **********************/

#if defined(STM32F413_423xx)

#define RCC_AHB1Periph_CAN3_Tx RCC_AHB1Periph_GPIOB

#define RCC_AHB1Periph_CAN3_Rx RCC_AHB1Periph_GPIOB

#define GPIO_CAN3_Tx GPIOB

#define GPIO_CAN3_Rx GPIOB

#define GPIO_Pin_CAN3_Tx GPIO_Pin_4

#define GPIO_Pin_CAN3_Rx GPIO_Pin_3

#define GPIO_PinSource_CAN3_Tx GPIO_PinSource4

#define GPIO_PinSource_CAN3_Rx GPIO_PinSource3

#endif /* STM32F413_423xx */

/****************************************************************/

#if defined(STM32F40_41xxx)

#define BAUD_RATE_1000K ((uint16_t)2)

#define BAUD_RATE_500K ((uint16_t)4)

#define BAUD_RATE_250K ((uint16_t)8)

#define BAUD_RATE_125K ((uint16_t)16)

#define BAUD_RATE_100K ((uint16_t)20)

#define BAUD_RATE_50K ((uint16_t)40)

#define BAUD_RATE_20K ((uint16_t)100)

#define BAUD_RATE_10K ((uint16_t)200)

#endif /* STM32F40_41xxx */

#if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx)

#define BAUD_RATE_1000K ((uint16_t)3)

#define BAUD_RATE_500K ((uint16_t)6)

#define BAUD_RATE_250K ((uint16_t)12)

#define BAUD_RATE_125K ((uint16_t)24)

#define BAUD_RATE_100K ((uint16_t)30)

#define BAUD_RATE_50K ((uint16_t)60)

#define BAUD_RATE_20K ((uint16_t)150)

#define BAUD_RATE_10K ((uint16_t)300)

#endif /* STM32F427_437x || STM32F429_439xx || STM32F446xx || STM32F469_479xx */

#if defined(STM32F413_423xx)

#define BAUD_RATE_1000K ((uint16_t)10)

#define BAUD_RATE_500K ((uint16_t)20)

#define BAUD_RATE_250K ((uint16_t)40)

#define BAUD_RATE_125K ((uint16_t)80)

#define BAUD_RATE_100K ((uint16_t)100)

#define BAUD_RATE_50K ((uint16_t)200)

#define BAUD_RATE_20K ((uint16_t)500)

#define BAUD_RATE_10K ((uint16_t)1000)

#endif /* STM32F413_423xx */

#if defined(STM32F412xG)

#define BAUD_RATE_1000K ((uint16_t)5)

#define BAUD_RATE_500K ((uint16_t)10)

#define BAUD_RATE_250K ((uint16_t)20)

#define BAUD_RATE_125K ((uint16_t)40)

#define BAUD_RATE_100K ((uint16_t)50)

#define BAUD_RATE_50K ((uint16_t)100)

#define BAUD_RATE_20K ((uint16_t)250)

#define BAUD_RATE_10K ((uint16_t)500)

#endif /* STM32F412xG */

/****************************************************************

* Type definition

*****************************************************************/

/****************************************************************

* Structure definition

*****************************************************************/

#ifdef __cplusplus

extern "C" {

#endif /* __cplusplus */

/****************************************************************

* Variable declaration

*****************************************************************/

/****************************************************************

* Function declaration

*****************************************************************/

void CAN_Configuration(CAN_TypeDef* CANx, uint16_t BaudRate, uint32_t StdId, uint32_t ExtId, uint8_t CAN_Mode, uint32_t CAN_IT);

void CAN_Unconfigure(CAN_TypeDef* CANx);

uint8_t CAN_TxMsg(CAN_TypeDef* CANx, CanTxMsg* TxMessage);

uint8_t CAN_RxMsg(CAN_TypeDef* CANx, CanRxMsg* RxMessage);

#ifdef __cplusplus

}

#endif /* __cplusplus */

#endif /* __CAN_H */


CAN.c文件

/****************************************************************

* Copyright (C) 2016, XinLi, all right reserved.

* File name: CAN.c

* Date: 2016.11.30

* Description: CAN Driver

*****************************************************************/

/****************************************************************

* Header include

*****************************************************************/

#include "CAN.h"

/****************************************************************

* Global variables

*****************************************************************/

static uint8_t gpioFlag = 0x00; /* Used to record the GPIO initialization flag. */

static uint8_t canFlag = 0x00; /* Used to record the CAN initialization flag. */

/****************************************************************

* Function declaration

*****************************************************************/

/****************************************************************

* Function definition

*****************************************************************/

/****************************************************************

* Function: CAN_Configuration

*

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉
關閉