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

📄 stm8s_can.h

📁 STM8s
💻 H
📖 第 1 页 / 共 2 页
字号:
/**
  ******************************************************************************
  * @file stm8s_can.h
  * @brief This file contains all the functions for the CAN peripheral.
  * @author STMicroelectronics - MCD Application Team
  * @version V1.1.1
  * @date 06/05/2009
  ******************************************************************************
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2009 STMicroelectronics</center></h2>
  * @image html logo.bmp
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM8S_CAN_H
#define __STM8S_CAN_H

/* Includes ------------------------------------------------------------------*/
#include "stm8s.h"

/* Exported constants --------------------------------------------------------*/
#define CAN_STDID_SIZE ((u16)0x07FF)
#define CAN_EXTID_SIZE ((u32)0x1FFFFFFF)
#define CAN_DLC_MAX ((u8)0x08)


/** @addtogroup CAN_Exported_Types
  * @{
  */


/**
  * @brief CAN Page Mapping
 */
typedef enum
{
 CAN_Page_TxMailBox0       = ((u8) 0), /*!< CAN TX mailbox 0 reg page */
 CAN_Page_TxMailBox1       = ((u8) 1), /*!< CAN TX mailbox 1 reg page */
 CAN_Page_TxMailBox2       = ((u8) 5), /*!< CAN TX mailbox 2 reg page */
 CAN_Page_Filter01    = ((u8) 2), /*!< CAN Filters 0 & 1 reg page*/
 CAN_Page_Filter23    = ((u8) 3), /*!< CAN Filters 2 & 3 reg page*/
 CAN_Page_Filter45    = ((u8) 4), /*!< CAN Filters 4 & 5 reg page*/
 CAN_Page_Config      = ((u8) 6), /*!< CAN Configuration control/status reg page*/
 CAN_Page_RxFifo      = ((u8) 7) /*!< CAN RX FIFO registers page */
}CAN_Page_TypeDef;



/**
  * @brief  CAN sleep constants 
 */
typedef enum {
  CAN_InitStatus_Failed =0,                        /*!< CAN initialization failed */
  CAN_InitStatus_Success =! CAN_InitStatus_Failed  /*!< CAN initialization OK*/
} CAN_InitStatus_TypeDef;

 
 /**
  * @brief CAN operating mode */
 typedef enum
{
  CAN_OperatingMode_Initialization    =((u8)0x00),    /*!< Initialization mode */
  CAN_OperatingMode_Normal            =((u8)0x01),    /*!< Normal mode */
  CAN_OperatingMode_Sleep             =((u8)0x02)    /*!< sleep mode */
}CAN_OperatingMode_TypeDef;

 /**
  * @brief CAN operating mode status */
 typedef enum
{
  CAN_ModeStatus_Failed    = ((u8)0x00),                /*!< CAN entring the specific mode failed */
  CAN_ModeStatus_Success    =! CAN_ModeStatus_Failed   /*!< CAN entring the specific mode Succeed */
}CAN_ModeStatus_TypeDef;

 /**
  * @brief  CAN Time Triggered Communication mode 
  */
typedef enum
{
 CAN_MasterCtrl_AllDisabled          =((u8)0x00),  /*!<  CAN  ALL Master Control Option are DISABLED */
 CAN_MasterCtrl_AllEnabled           =((u8)0xFC),  /*!<  CAN  ALL Master Control Option are DISABLED */
 CAN_MasterCtrl_TimeTriggerCOMMode   =((u8)0x80),  /*!<  CAN Time Triggered Communication mode ENABLED */
 CAN_MasterCtrl_AutoBusOffManagement =((u8)0x40),  /*!<  CAN Auto Bus Off Management ENABLED */
 CAN_MasterCtrl_AutoWakeUpMode       =((u8)0x20),  /*!<  CAN Automatic WakeUp Mode ENABLED , sleep mode is left automatically by hardware  */
 CAN_MasterCtrl_NoAutoReTx           =((u8)0x10),  /*!<  CAN Non Automatic Retransmission ENABLED, MSG  will be transmitted only once */
 CAN_MasterCtrl_RxFifoLockedMode     =((u8)0x08),  /*!<  CAN Recieve FIFO Locked  against overrun ENABLED */
 CAN_MasterCtrl_TxFifoPriority       =((u8)0x04)   /*!<  CAN Transmit FIFO Priority  driven by the request order (not by the identifier of the MSG) */
 }CAN_MasterCtrl_TypeDef;

/**
  * @brief  CAN  mode options */
typedef enum
{
  CAN_Mode_Normal             =((u8)0x00),  /*!< normal mode */
  CAN_Mode_LoopBack           =((u8)0x01),  /*!< loopback mode */
  CAN_Mode_Silent             =((u8)0x02),  /*!< silent mode */
  CAN_Mode_Silent_LoopBack    =((u8)0x03)  /*!< loopback combined with silent mode */
}CAN_Mode_TypeDef;

/**
  * @brief CAN synchronisation jump width (SJW)*/
typedef enum
{
  CAN_SynJumpWidth_1TimeQuantum                 =((u8)0x00),  /*!< 1 time quantum */
  CAN_SynJumpWidth_2TimeQuantum                 =((u8)0x40),  /*!< 2 time quantum */
  CAN_SynJumpWidth_3TimeQuantum                 =((u8)0x80),  /*!< 3 time quantum */
  CAN_SynJumpWidth_4TimeQuantum                 =((u8)0xC0)  /*!< 4 time quantum */
}CAN_SynJumpWidth_TypeDef;

/**
  * @brief  time quantum in bit segment 1 */
typedef enum
{
  CAN_BitSeg1_1TimeQuantum                 =((u8)0x00),  /*!< 1 time quantum */
  CAN_BitSeg1_2TimeQuantum                 =((u8)0x01),  /*!< 2 time quantum */
  CAN_BitSeg1_3TimeQuantum                 =((u8)0x02),  /*!< 3 time quantum */
  CAN_BitSeg1_4TimeQuantum                 =((u8)0x03) , /*!< 4 time quantum */
  CAN_BitSeg1_5TimeQuantum                 =((u8)0x04) , /*!< 5 time quantum */
  CAN_BitSeg1_6TimeQuantum                 =((u8)0x05) , /*!< 6 time quantum */
  CAN_BitSeg1_7TimeQuantum                 =((u8)0x06) , /*!< 7 time quantum */
  CAN_BitSeg1_8TimeQuantum                 =((u8)0x07),  /*!< 8 time quantum */
  CAN_BitSeg1_9TimeQuantum                 =((u8)0x08),  /*!< 9 time quantum */
  CAN_BitSeg1_10TimeQuantum                =((u8)0x09),  /*!< 10 time quantum */
  CAN_BitSeg1_11TimeQuantum                =((u8)0x0A),  /*!< 11 time quantum */
  CAN_BitSeg1_12TimeQuantum                =((u8)0x0B),  /*!< 12 time quantum */
  CAN_BitSeg1_13TimeQuantum                =((u8)0x0C),  /*!< 13 time quantum */
  CAN_BitSeg1_14TimeQuantum                =((u8)0x0D),  /*!< 14 time quantum */
  CAN_BitSeg1_15TimeQuantum                =((u8)0x0E),  /*!< 15 time quantum */
  CAN_BitSeg1_16TimeQuantum                =((u8)0x0F)  /*!< 16 time quantum */
}CAN_BitSeg1_TypeDef;

/**
  * @brief  time quantum in bit segment 2 */
typedef enum
{
  CAN_BitSeg2_1TimeQuantum                = ((u8)0x00),  /*!< 1 time quantum */
  CAN_BitSeg2_2TimeQuantum                = ((u8)0x10),  /*!< 2 time quantum */
  CAN_BitSeg2_3TimeQuantum                = ((u8)0x20),  /*!< 3 time quantum */
  CAN_BitSeg2_4TimeQuantum                = ((u8)0x30),  /*!< 4 time quantum */
  CAN_BitSeg2_5TimeQuantum                = ((u8)0x40),  /*!< 5 time quantum */
  CAN_BitSeg2_6TimeQuantum                = ((u8)0x50),  /*!< 6 time quantum */
  CAN_BitSeg2_7TimeQuantum                = ((u8)0x60),  /*!< 7 time quantum */
  CAN_BitSeg2_8TimeQuantum                = ((u8)0x70)   /*!< 8 time quantum */
}CAN_BitSeg2_TypeDef;


/**
  * @brief  CAN filter number */
typedef enum
{                                                                  
  CAN_FilterNumber_0                = ((u8)0x00),  /*!< Filter number 0 */ 
  CAN_FilterNumber_1                = ((u8)0x01),  /*!< Filter number 1 */ 
  CAN_FilterNumber_2                = ((u8)0x02),  /*!< Filter number 2 */
  CAN_FilterNumber_3                = ((u8)0x03),  /*!< Filter number 3 */
  CAN_FilterNumber_4                = ((u8)0x04),  /*!< Filter number 4 */ 
  CAN_FilterNumber_5                = ((u8)0x05)   /*!< Filter number 5 */ 
}CAN_FilterNumber_TypeDef;

/**
  * @brief  CAN filter mode */
typedef enum
{
  CAN_FilterMode_IdMask                  =  ((u8)0x00),    /*!< id/mask mode */
	CAN_FilterMode_IdMask_IdList           =  ((u8)0x10),    /*!< Id/Mask mode First and IdList mode second */
	CAN_FilterMode_IdList_IdMask           =  ((u8)0x11),    /*!< IdList mode First and IdMask mode second */
	CAN_FilterMode_IdList                  =  ((u8)0x01)     /*!< identifier list mode */
}CAN_FilterMode_TypeDef;

/**
  * @brief  CAN filter scale */
typedef enum
{
  CAN_FilterScale_8Bit       =((u8)0x00), /*!< 8-bit filter scale */
  CAN_FilterScale_16_8Bit    =((u8)0x02), /*!< 16/8-bit filter scale */
  CAN_FilterScale_16Bit      =((u8)0x04), /*!< 16-bit filter scale */
  CAN_FilterScale_32Bit      =((u8)0x06)  /*!< 32-bit filter scale */
}CAN_FilterScale_TypeDef;


/**
  * @brief  CAN Tx mailboxes*/
typedef enum
{
 CAN_TransmitMailBox_0       = ((u8) 0x00),  /*!< CAN TX mailbox 0 reg page */
 CAN_TransmitMailBox_1       = ((u8) 0x01),  /*!< CAN TX mailbox 1 reg page */
 CAN_TransmitMailBox_2       = ((u8) 0x05)   /*!< CAN TX mailbox 2 reg page */
}CAN_TransmitMailBox_TypeDef;

/**
  * @brief  CAN Pending Messages number*/
typedef enum
{
  CAN_NbrPendingMessage_0     =  ((u8)0x00),  /*!< No Msg Pending */
	CAN_NbrPendingMessage_1     =  ((u8)0x01),  /*!< 1 Msg Pending */
	CAN_NbrPendingMessage_2     =  ((u8)0x02),  /*!< 2 Msg Pending */
	CAN_NbrPendingMessage_3     =  ((u8)0x03)  /*!< 3 Msg Pending */
}CAN_NbrPendingMessage_TypeDef;

/**
  * @brief  CAN identifier type */
typedef enum
{
  CAN_Id_Standard                 =((u8)0x00),  /*!< Standard Id */
  CAN_Id_Extended                 =((u8)0x40)  /*!< Extended Id */
}CAN_Id_TypeDef;

/**
  * @brief  CAN remote transmission request */
typedef enum
{
  CAN_RTR_Data               = ((u8)0x00),  /*!< Data frame */
  CAN_RTR_Remote             = ((u8)0x20)  /*!< Remote frame */
}CAN_RTR_TypeDef;

/**
  * @brief  CAN transmit Status */
typedef enum
{
  CAN_TxStatus_Failed                 =((u8)0xF0), /*!< CAN transmission failed */
  CAN_TxStatus_Ok                     =((u8)0xF1), /*!< CAN transmission succeeded */
  CAN_TxStatus_Pending                =((u8)0xF2), /*!< CAN transmission pending */
  CAN_TxStatus_NoMailBox              =((u8)0xF4), /*!< CAN cell did not provide an empty mailbox */
	CAN_TxStatus_MailBoxEmpty           =((u8)0xF5), /*!< CAN Tx mailbox is Empty */
	CAN_TxStatus_MailBox0Ok             =((u8)0x00), /*!< CAN transmission succeeded by mail box 1*/
	CAN_TxStatus_MailBox1Ok             =((u8)0x01), /*!< CAN transmission succeeded by mail box 2*/
	CAN_TxStatus_MailBox2Ok             =((u8)0x05) /*!< CAN transmission succeeded by mail box 3*/
}CAN_TxStatus_TypeDef;

/**
  * @brief  CAN sleep Status */
typedef enum
{
  CAN_Sleep_Failed             = ((u8)0x00), /*!< CAN did not enter the sleep mode */
  CAN_Sleep_Ok                 = ((u8)0x01) /*!< CAN entered the sleep mode */
}CAN_Sleep_TypeDef;
/**
  * @brief  CAN wake up status */
typedef enum
{
 CAN_WakeUp_Failed          =   ((u8)0x00), /*!< CAN did not leave the sleep mode */
 CAN_WakeUp_Ok              =   ((u8)0x01) /*!< CAN leaved the sleep mode */
}CAN_WakeUp_TypeDef;

/**
  * @brief  CAN Clock Source */
typedef enum
{
 CAN_ClockSource_Internal          =   ((u8)0x00), /*!< CAN Clock source is fMaster */
 CAN_ClockSource_External          =   ((u8)0x80) /*!< CAN Clock source is External Xtal */
}CAN_ClockSource_TypeDef;

/**
  * @brief  CAN flags */
typedef enum
{
  /* if the flag is 0x3XXX, it means that it can be got (CAN_GetFlagStatus) and Cleared (CAN_ClearFlag) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -