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

📄 stm8s_can.h

📁 STM8s
💻 H
📖 第 1 页 / 共 2 页
字号:
	/* if the flag is 0x1XXX, it means that it can only be got (CAN_GetFlagStatus)  */
  /*Transmit Flags*/
  CAN_FLAG_RQCP0            =((u16)0x3401), /*!< Request MailBox0  Flag */
	CAN_FLAG_RQCP1            =((u16)0x3402), /*!< Request MailBox1  Flag */
	CAN_FLAG_RQCP2            =((u16)0x3404), /*!< Request MailBox2  Flag */
	/*Receive Flags*/
	CAN_FLAG_FMP              =((u16)0x1203), /*!< FIFO Message Pending Flag */
	CAN_FLAG_FF               =((u16)0x3208), /*!< FIFO Full  Flag */
	CAN_FLAG_FOV              =((u16)0x3210), /*!< FIFO Overrun  Flag */
	/*Wake up Flag*/
	CAN_FLAG_WKU              =((u16)0x3108), /*!< wake up   Flag */
	/*Error Flags*/
	CAN_FLAG_EWG              =((u16)0x1001), /*!< Error Warning Flag */
  CAN_FLAG_EPV              =((u16)0x1002), /*!< Error Passive Flag */
  CAN_FLAG_BOF              =((u16)0x1004), /*!< Bus-Off Flag */
  CAN_FLAG_LEC              =((u16)0x3070) /*!< Last error code Flag */
}CAN_Flag_TypeDef;

/**
  * @brief  CAN interrupts */
typedef enum
{
  /*Transmit Interruption*/
	CAN_IT_TME                  =((u16)0x0001), /*!< Transmit mailbox empty interrupt */
  /*Receive Interruptions*/
	CAN_IT_FMP                  =((u16)0x0002), /*!< FIFO  message pending interrupt   */	
  CAN_IT_FF                   =((u16)0x0004), /*!< FIFO  full    interrupt                    */
  CAN_IT_FOV                  =((u16)0x0008), /*!< FIFO  overrun  interrupt               */
	/*Wake Up Interruption*/
  CAN_IT_WKU                  =((u16)0x0080), /*!< Wake-up interrupt                         */
	/*Error Interruptions*/
  CAN_IT_ERR                  =((u16)0x4000), /*!< Genaral Error interrupt                 */
	CAN_IT_EWG                  =((u16)0x0100), /*!< Error warning interrupt                */
  CAN_IT_EPV                  =((u16)0x0200), /*!< Error passive  interrupt                */
  CAN_IT_BOF                  =((u16)0x0400), /*!< Bus-off   interrupt                        */
  CAN_IT_LEC                  =((u16)0x0800)  /*!< Last error code interrupt              */
} CAN_IT_TypeDef;

/**
  * @brief  CAN ST7 Compatibility*/
typedef enum
{
  CAN_ST7Compatibility_Enable     =  ((u8)0x00), /*!< CAN is compatible with ST7 beCAN (only 2 mailboxes are availble)*/
	CAN_ST7Compatibility_Disable    =  ((u8)0x10)  /*!< CAN is not compatible with ST7 beCAN ( 3 mailboxes are availble)*/
}CAN_ST7Compatibility_TypeDef;

/**
  * @brief  CAN Error Code description */
typedef enum
{                                                                  
  CAN_ErrorCode_NoErr                 = ((u8)0x00),  /*!< No Error  */ 
	CAN_ErrorCode_StuffErr              = ((u8)0x10),  /*!< Stuff Error  */ 
	CAN_ErrorCode_FormErr               = ((u8)0x20),  /*!< Form Error  */ 
	CAN_ErrorCode_ACKErr                = ((u8)0x30),  /*!< Acknowledgment Error  */ 
	CAN_ErrorCode_BitRecessiveErr       = ((u8)0x40),  /*!< Bit Recessive Error  */ 
	CAN_ErrorCode_BitDominantErr        = ((u8)0x50),  /*!< Bit Dominant Error  */ 
	CAN_ErrorCode_CRCErr                = ((u8)0x60),  /*!< CRC Error  */ 
	CAN_ErrorCode_SoftwareSetErr        = ((u8)0x70)  /*!< Software Set Error  */ 
}CAN_ErrorCode_TypeDef;
/**
  * @}
  */
/* Private macros ------------------------------------------------------------*/
/** @addtogroup CAN_Private_Macros
  * @{
  */
/**
  * @brief Macro used by the assert function in order to check the CAN ST7 Compatibility parameters.
  */
#define IS_CAN_ST7_COMPATIBILITY_OK(STATE) (((STATE) == CAN_ST7Compatibility_Enable) || ((STATE) == CAN_ST7Compatibility_Disable))
/**
  * @brief Macro used by the assert function in order to check  CAN operating mode.
  */
#define IS_CAN_OPERATINGMODE_OK(MODE) (((MODE) == CAN_OperatingMode_Initialization) ||\
                                    ((MODE) == CAN_OperatingMode_Normal)|| \
																		((MODE) == CAN_OperatingMode_Sleep))
/**
  * @brief Macro used by the assert function in order to check CAN Time Triggered Communication mode.
  */
#define IS_CAN_MASTERCTRL_OK(MODE) (((MODE) == CAN_MasterCtrl_AllDisabled) || ((MODE) <= CAN_MasterCtrl_AllEnabled && (MODE) >= CAN_MasterCtrl_TxFifoPriority))
/**
  * @brief Macro used by the assert function in order to check   CAN  mode options .
  */
#define IS_CAN_MODE_OK(MODE) (((MODE) == CAN_Mode_Normal) || ((MODE) == CAN_Mode_LoopBack)|| \
                           ((MODE) == CAN_Mode_Silent) || ((MODE) == CAN_Mode_Silent_LoopBack))
/**
  * @brief Macro used by the assert function in order to check the CAN synchronisation jump width (SJW).
  */
#define IS_CAN_SYNJUMPWIDTH_OK(SJW) (((SJW) == CAN_SynJumpWidth_1TimeQuantum) || ((SJW) == CAN_SynJumpWidth_2TimeQuantum)|| \
                         ((SJW) == CAN_SynJumpWidth_3TimeQuantum) || ((SJW) == CAN_SynJumpWidth_4TimeQuantum))
/**
  * @brief Macro used by the assert function in order to check time quantum in bit segment 1 .
  */
#define IS_CAN_BITSEG1_OK(BS1) ((BS1) <= CAN_BitSeg1_16TimeQuantum)
/**
  * @brief Macro used by the assert function in order to check time quantum in bit segment 2.
  */
#define IS_CAN_BITSEG2_OK(BS2) ((((BS2) >= CAN_BitSeg2_2TimeQuantum) && ((BS2) <= CAN_BitSeg2_8TimeQuantum))|| ((BS2) == CAN_BitSeg2_1TimeQuantum))
/**
  * @brief Macro used by the assert function in order to check CAN clock prescaler.
  */
#define IS_CAN_PRESCALER_OK(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 64))
/**
  * @brief Macro used by the assert function in order to check CAN filter number.
  */
#define IS_CAN_FILTER_NUMBER_OK(NUMBER) (((NUMBER) == CAN_FilterNumber_0) || \
                                       ((NUMBER) == CAN_FilterNumber_1) || \
									                     ((NUMBER) == CAN_FilterNumber_2) || \
									                     ((NUMBER) == CAN_FilterNumber_3) || \
									                     ((NUMBER) == CAN_FilterNumber_4) || \
									                     ((NUMBER) == CAN_FilterNumber_5))
/**
  * @brief Macro used by the assert function in order to check  CAN filter mode.
  */
#define IS_CAN_FILTER_MODE_OK(MODE) (((MODE) == CAN_FilterMode_IdMask) || \
                                     ((MODE) == CAN_FilterMode_IdMask_IdList) || \
																		 ((MODE) == CAN_FilterMode_IdList_IdMask) || \
                                  ((MODE) == CAN_FilterMode_IdList))
/**
  * @brief Macro used by the assert function in order to check CAN filter scale.
  */
#define IS_CAN_FILTER_SCALE_OK(SCALE) (((SCALE) == CAN_FilterScale_8Bit)|| \
                                    ((SCALE) == CAN_FilterScale_16_8Bit) ||\
																		((SCALE) == CAN_FilterScale_16Bit  )||\
																		((SCALE) == CAN_FilterScale_32Bit))
/**
  * @brief Macro used by the assert function in order to check CAN Tx mailboxes.
  */
#define IS_CAN_TRANSMITMAILBOX_OK(TRANSMITMAILBOX) (((TRANSMITMAILBOX) == CAN_TransmitMailBox_0) || \
                                                 ((TRANSMITMAILBOX) == CAN_TransmitMailBox_1) || \
                                                 ((TRANSMITMAILBOX) == CAN_TransmitMailBox_2))
/**
  * @brief Macro used by the assert function in order to check the Standard ID to be sent.
  */
#define IS_CAN_STDID_OK(STDID)   ((STDID) <= ((u16)CAN_STDID_SIZE))
/**
  * @brief Macro used by the assert function in order to check the Extended ID to be sent.
  */
#define IS_CAN_EXTID_OK(EXTID)   ((EXTID) <= ((u32)CAN_EXTID_SIZE))
/**
  * @brief Macro used by the assert function in order to check the DLC to be sent.
  */
#define IS_CAN_DLC_OK(DLC)       ((DLC) <= CAN_DLC_MAX)
/**
  * @brief Macro used by the assert function in order to check the type of the ID to be sent.
  */
#define IS_CAN_IDTYPE_OK(IDTYPE) (((IDTYPE) == CAN_Id_Standard) || ((IDTYPE) == CAN_Id_Extended))
/**
  * @brief Macro used by the assert function in order to check CAN  transmission  Frame Type.
  */
#define IS_CAN_RTR_OK(RTR) (((RTR) == CAN_RTR_Data) || ((RTR) == CAN_RTR_Remote))
/**
  * @brief Macro used by the assert function in order to check CAN Clock Source.
  */
#define IS_CAN_CLOCKSOURCE_OK(SOURCE) (((SOURCE) == CAN_ClockSource_Internal) || ((SOURCE) == CAN_ClockSource_External))
/**
  * @brief Macro used by the assert function in order to check  CAN flags which can be got by @ref CAN_GetFlagStatus
  */
#define IS_CAN_FLAG_STATUS_OK(FLAG) (((FLAG) == CAN_FLAG_RQCP0) || ((FLAG) == CAN_FLAG_RQCP1) ||\
                                  ((FLAG) == CAN_FLAG_RQCP2) || ((FLAG) == CAN_FLAG_FMP) ||\
																	((FLAG) == CAN_FLAG_FF) || ((FLAG) == CAN_FLAG_FOV) ||\
																	((FLAG) == CAN_FLAG_WKU) || ((FLAG) == CAN_FLAG_EWG) ||\
																	((FLAG) == CAN_FLAG_EPV) || ((FLAG) == CAN_FLAG_BOF) ||\
																	((FLAG) == CAN_FLAG_LEC))
/**
  * @brief Macro used by the assert function in order to check  CAN flags which can be cleared by @ref CAN_ClearFlag
  */
#define IS_CAN_FLAG_CLEAR_OK(FLAG) (((FLAG) == CAN_FLAG_RQCP0) || ((FLAG) == CAN_FLAG_RQCP1) ||\
                                    ((FLAG) == CAN_FLAG_RQCP2) ||	((FLAG) == CAN_FLAG_FF)   ||\
																	  ((FLAG) == CAN_FLAG_FOV)  ||	((FLAG) == CAN_FLAG_WKU) ||\
																	  ((FLAG) == CAN_FLAG_LEC))
/**
  * @brief Macro used by the assert function in order to check the  CAN Configuration interrupts.
  */
#define CAN_IT_CONFIG_MASK  ~(u16)(CAN_IT_TME|CAN_IT_FMP|CAN_IT_FF|CAN_IT_FOV|CAN_IT_WKU|CAN_IT_EWG|CAN_IT_EPV|CAN_IT_BOF|CAN_IT_LEC|CAN_IT_ERR)
#define IS_CAN_IT_CONFIG_OK(IT) (((IT) != 0x0000) && ((IT & CAN_IT_CONFIG_MASK) == 0x0000))
/**
  * @brief Macro used by the assert function in order to check the  CAN status interrupts.
  */
#define IS_CAN_IT_STATUS_OK(IT) (((IT) == CAN_IT_TME)   || ((IT) == CAN_IT_FMP) ||\
                             ((IT) == CAN_IT_FF)    || ((IT) == CAN_IT_FOV) || \
                             ((IT) == CAN_IT_WKU)   || ((IT) == CAN_IT_ERR)  || \
														 ((IT) == CAN_IT_EWG)   || ((IT) == CAN_IT_EPV)  || \
                             ((IT) == CAN_IT_BOF)   || ((IT) == CAN_IT_LEC)  )
/**
  * @brief Macro used by the assert function in order to check the  CAN Pending bit interrupts.
  */
#define IS_CAN_IT_PENDING_BIT_OK(IT) (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FF)  ||\
																			((IT) == CAN_IT_FOV)  || ((IT) == CAN_IT_WKU) ||\
																			((IT) == CAN_IT_ERR)  || ((IT) == CAN_IT_EWG) ||\
																			((IT) == CAN_IT_EPV) || ((IT) == CAN_IT_BOF)||\
																			((IT) == CAN_IT_LEC))
/**
  * @brief Macro used by the assert function in order to check the Last Error Code.
  */
#define IS_CAN_LAST_ERROR_CODE_OK(CODE)  ((CODE & 0x8F) == 0x00)
/**
  * @}
  */

/* Exported function protypes ----------------------------------------------- */
/** @addtogroup CAN_Exported_Functions
  * @{
  */
void CAN_DeInit(void);
CAN_InitStatus_TypeDef CAN_Init(CAN_MasterCtrl_TypeDef CAN_MasterCtrl,
						                    CAN_Mode_TypeDef CAN_Mode,
						                    CAN_SynJumpWidth_TypeDef CAN_SynJumpWidth,
						                    CAN_BitSeg1_TypeDef CAN_BitSeg1,
						                    CAN_BitSeg2_TypeDef CAN_BitSeg2,
						                    CAN_ClockSource_TypeDef CAN_ClockSource,
						                    u8 CAN_Prescaler);

void CAN_FilterInit(CAN_FilterNumber_TypeDef CAN_FilterNumber,
                    FunctionalState CAN_FilterActivation,
                    CAN_FilterMode_TypeDef CAN_FilterMode,
					          CAN_FilterScale_TypeDef CAN_FilterScale,
					          u8 CAN_FilterID1,  
				          	u8 CAN_FilterID2,
				          	u8 CAN_FilterID3,
				           	u8 CAN_FilterID4,
				          	u8 CAN_FilterIDMask1,
				           	u8 CAN_FilterIDMask2,
					          u8 CAN_FilterIDMask3,
				            u8 CAN_FilterIDMask4);
void CAN_ITConfig(CAN_IT_TypeDef CAN_IT, FunctionalState NewState);
void CAN_ST7CompatibilityCmd(CAN_ST7Compatibility_TypeDef CAN_ST7Compatibility);
CAN_TxStatus_TypeDef CAN_Transmit( u32 CAN_Id,
                                   CAN_Id_TypeDef CAN_IDE,
                                   CAN_RTR_TypeDef CAN_RTR,
                                   u8 CAN_DLC,
                                   u8 *CAN_Data);
void CAN_TTComModeCmd(FunctionalState NewState);
CAN_TxStatus_TypeDef CAN_TransmitStatus(CAN_TransmitMailBox_TypeDef CAN_TransmitMailbox);
void CAN_CancelTransmit(CAN_TransmitMailBox_TypeDef CAN_TransmitMailbox);
void CAN_FIFORelease(void);
CAN_NbrPendingMessage_TypeDef CAN_MessagePending(void);
void CAN_Receive(void);
u32 CAN_GetReceivedId(void);
CAN_Id_TypeDef CAN_GetReceivedIDE(void);
CAN_RTR_TypeDef CAN_GetReceivedRTR(void);
u8 CAN_GetReceivedDLC(void);
u8 CAN_GetReceivedData(u8 CAN_DataIndex);
u8 CAN_GetReceivedFMI(void);
u16 CAN_GetMessageTimeStamp(void);
CAN_Sleep_TypeDef CAN_Sleep(void);
CAN_WakeUp_TypeDef CAN_WakeUp(void);
void CAN_SelectClock(CAN_ClockSource_TypeDef CAN_ClockSource);
CAN_ModeStatus_TypeDef CAN_OperatingModeRequest(CAN_OperatingMode_TypeDef CAN_OperatingMode);
CAN_ErrorCode_TypeDef CAN_GetLastErrorCode(void);
CAN_Page_TypeDef CAN_GetSelectedPage(void);
void CAN_SelectPage(CAN_Page_TypeDef CAN_Page);
FlagStatus CAN_GetFlagStatus(CAN_Flag_TypeDef CAN_Flag);
void CAN_ClearFlag(CAN_Flag_TypeDef CAN_FLAG);
ITStatus CAN_GetITStatus(CAN_IT_TypeDef CAN_IT);
void CAN_ClearITPendingBit(CAN_IT_TypeDef CAN_IT);
/**
  * @}
  */
#endif /* __STM8S_CAN_H */

/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

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