STM32F RFID通讯源代码(支持双向发送接收)

源代码在线查看: stm32f10x_rtc.c

软件大小: 317.85K
上传用户: ctf3033611
关键词: RFID STM 32F 32
下载地址: 免注册下载 普通下载 VIP

相关代码

				/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
				* File Name          : stm32f10x_rtc.c
				* Author             : MCD Application Team
				* Date First Issued  : 09/29/2006
				* Description        : This file provides all the RTC firmware functions.
				********************************************************************************
				* History:
				* 05/21/2007: V0.3
				* 04/02/2007: V0.2
				* 02/05/2007: V0.1
				* 09/29/2006: V0.01
				********************************************************************************
				* THE PRESENT SOFTWARE 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 SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
				* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
				*******************************************************************************/
				
				/* Includes ------------------------------------------------------------------*/
				#include "stm32f10x_rtc.h"
				
				/* Private typedef -----------------------------------------------------------*/
				/* Private define ------------------------------------------------------------*/
				#define CRL_CNF_Set      ((u16)0x0010)      /* Configuration Flag Enable Mask */
				#define CRL_CNF_Reset    ((u16)0xFFEF)      /* Configuration Flag Disable Mask */
				#define RTC_LSB_Mask     ((u32)0x0000FFFF)  /* RTC LSB Mask */
				#define RTC_MSB_Mask     ((u32)0xFFFF0000)  /* RTC MSB Mask */
				#define PRLH_MSB_Mask    ((u32)0x000F0000)  /* RTC Prescaler MSB Mask */
				
				/* Private macro -------------------------------------------------------------*/
				/* Private variables ---------------------------------------------------------*/
				/* Private function prototypes -----------------------------------------------*/
				/* Private functions ---------------------------------------------------------*/
				
				/*******************************************************************************
				* Function Name  : RTC_ITConfig
				* Description    : Enables or disables the specified RTC interrupts.
				* Input          : - RTC_IT: specifies the RTC interrupts sources to be enabled
				*                    or disabled.
				*                    This parameter can be any combination of the following values:
				*                       - RTC_IT_OW: Overflow interrupt
				*                       - RTC_IT_ALR: Alarm interrupt
				*                       - RTC_IT_SEC: Second interrupt
				*                  - NewState: new state of the specified RTC interrupts.
				*                    This parameter can be: ENABLE or DISABLE.
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_ITConfig(u16 RTC_IT, FunctionalState NewState)
				{
				  /* Check the parameters */
				  assert(IS_RTC_IT(RTC_IT));  
				  assert(IS_FUNCTIONAL_STATE(NewState));
				  
				  if (NewState != DISABLE)
				  {
				    RTC->CRH |= RTC_IT;
				  }
				  else
				  {
				    RTC->CRH &= (u16)~RTC_IT;
				  }
				}
				
				/*******************************************************************************
				* Function Name  : RTC_EnterConfigMode
				* Description    : Enters the RTC configuration mode.
				* Input          : None
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_EnterConfigMode(void)
				{
				  /* Set the CNF flag to enter in the Configuration Mode */
				  RTC->CRL |= CRL_CNF_Set;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_ExitConfigMode
				* Description    : Exits from the RTC configuration mode.
				* Input          : None
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_ExitConfigMode(void)
				{
				  /* Reset the CNF flag to exit from the Configuration Mode */
				  RTC->CRL &= CRL_CNF_Reset;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_GetCounter
				* Description    : Gets the RTC counter value.
				* Input          : None
				* Output         : None
				* Return         : RTC counter value.
				*******************************************************************************/
				u32 RTC_GetCounter(void)
				{
				  u16 tmp = 0;
				  tmp = RTC->CNTL;
				
				  return (((u32)RTC->CNTH 				}
				
				/*******************************************************************************
				* Function Name  : RTC_SetCounter
				* Description    : Sets the RTC counter value.
				* Input          : - CounterValue: RTC counter new value.
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_SetCounter(u32 CounterValue)
				{ 
				  RTC_EnterConfigMode();
				
				  /* Set RTC COUNTER MSB word */
				  RTC->CNTH = (CounterValue & RTC_MSB_Mask) >> 16;
				  /* Set RTC COUNTER LSB word */
				  RTC->CNTL = (CounterValue & RTC_LSB_Mask);
				
				  RTC_ExitConfigMode();
				}
				
				/*******************************************************************************
				* Function Name  : RTC_GetPrescaler
				* Description    : Gets the RTC prescaler value.
				* Input          : None
				* Output         : None
				* Return         : RTC prescaler value.
				*******************************************************************************/
				u32 RTC_GetPrescaler(void)
				{
				  u32 tmp = 0x00;
				
				  tmp = ((u32)RTC->PRLH & (u32)0x000F) 				  tmp |= RTC->PRLL;
				
				  return tmp;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_SetPrescaler
				* Description    : Sets the RTC prescaler value.
				* Input          : - PrescalerValue: RTC prescaler new value.
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_SetPrescaler(u32 PrescalerValue)
				{
				  /* Check the parameters */
				  assert(IS_RTC_PRESCALER(PrescalerValue));
				  
				  RTC_EnterConfigMode();
				
				  /* Set RTC PRESCALER MSB word */
				  RTC->PRLH = (PrescalerValue & PRLH_MSB_Mask) >> 0x10;
				  /* Set RTC PRESCALER LSB word */
				  RTC->PRLL = (PrescalerValue & RTC_LSB_Mask);
				
				  RTC_ExitConfigMode();
				}
				
				/*******************************************************************************
				* Function Name  : RTC_SetAlarm
				* Description    : Sets the RTC alarm value.
				* Input          : - AlarmValue: RTC alarm new value.
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_SetAlarm(u32 AlarmValue)
				{  
				  RTC_EnterConfigMode();
				
				  /* Set the ALARM MSB word */
				  RTC->ALRH = (AlarmValue & RTC_MSB_Mask) >> 16;
				  /* Set the ALARM LSB word */
				  RTC->ALRL = (AlarmValue & RTC_LSB_Mask);
				
				  RTC_ExitConfigMode();
				}
				
				/*******************************************************************************
				* Function Name  : RTC_GetDivider
				* Description    : Gets the RTC divider value.
				* Input          : None
				* Output         : None
				* Return         : RTC Divider value.
				*******************************************************************************/
				u32 RTC_GetDivider(void)
				{
				  u32 tmp = 0x00;
				
				  tmp = ((u32)RTC->DIVH & (u32)0x000F) 				  tmp |= RTC->DIVL;
				
				  return tmp;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_WaitForLastTask
				* Description    : Waits until last write operation on RTC registers has finished.
				*                  This function must be called before any write to RTC registers.
				* Input          : None
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_WaitForLastTask(void)
				{
				  /* Loop until RTOFF flag is set */
				  while ((RTC->CRL & RTC_FLAG_RTOFF) == (u16)RESET)
				  {
				  }
				}
				
				/*******************************************************************************
				* Function Name  : RTC_WaitForSynchro
				* Description    : Waits until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL)
				*                  are synchronized with RTC APB clock.
				*                  This function must be called before any read operation after
				*                  an APB reset or an APB clock stop.
				* Input          : None
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_WaitForSynchro(void)
				{
				  /* Clear RSF flag */
				  RTC->CRL &= (u16)~RTC_FLAG_RSF;
				
				  /* Loop until RSF flag is set */
				  while ((RTC->CRL & RTC_FLAG_RSF) == (u16)RESET)
				  {
				  }
				}
				
				/*******************************************************************************
				* Function Name  : RTC_GetFlagStatus
				* Description    : Checks whether the specified RTC flag is set or not.
				* Input          : - RTC_FLAG: specifies the flag to check.
				*                    This parameter can be one the following values:
				*                       - RTC_FLAG_RTOFF: RTC Operation OFF flag
				*                       - RTC_FLAG_RSF: Registers Synchronized flag
				*                       - RTC_FLAG_OW: Overflow flag
				*                       - RTC_FLAG_ALR: Alarm flag
				*                       - RTC_FLAG_SEC: Second flag
				* Output         : None
				* Return         : The new state of RTC_FLAG (SET or RESET).
				*******************************************************************************/
				FlagStatus RTC_GetFlagStatus(u16 RTC_FLAG)
				{
				  FlagStatus bitstatus = RESET;
				  
				  /* Check the parameters */
				  assert(IS_RTC_GET_FLAG(RTC_FLAG)); 
				  
				  if ((RTC->CRL & RTC_FLAG) != (u16)RESET)
				  {
				    bitstatus = SET;
				  }
				  else
				  {
				    bitstatus = RESET;
				  }
				  return bitstatus;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_ClearFlag
				* Description    : Clears the RTC抯 pending flags.
				* Input          : - RTC_FLAG: specifies the flag to clear.
				*                    This parameter can be any combination of the following values:
				*                       - RTC_FLAG_RSF: Registers Synchronized flag. This flag
				*                         is cleared only after an APB reset or an APB Clock stop.
				*                       - RTC_FLAG_OW: Overflow flag
				*                       - RTC_FLAG_ALR: Alarm flag
				*                       - RTC_FLAG_SEC: Second flag
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_ClearFlag(u16 RTC_FLAG)
				{
				  /* Check the parameters */
				  assert(IS_RTC_CLEAR_FLAG(RTC_FLAG)); 
				    
				  /* Clear the coressponding RTC flag */
				  RTC->CRL &= (u16)~RTC_FLAG;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_GetITStatus
				* Description    : Checks whether the specified RTC interrupt has occured or not.
				* Input          : - RTC_IT: specifies the RTC interrupts sources to check.
				*                    This parameter can be one of the following values:
				*                       - RTC_IT_OW: Overflow interrupt
				*                       - RTC_IT_ALR: Alarm interrupt
				*                       - RTC_IT_SEC: Second interrupt
				* Output         : None
				* Return         : The new state of the RTC_IT (SET or RESET).
				*******************************************************************************/
				ITStatus RTC_GetITStatus(u16 RTC_IT)
				{
				  ITStatus bitstatus = RESET;
				
				  /* Check the parameters */
				  assert(IS_RTC_GET_IT(RTC_IT)); 
				  
				  bitstatus = (ITStatus)((RTC->CRL & RTC_IT) != (u16)RESET);
				
				  if (((RTC->CRH & RTC_IT) != (u16)RESET) && bitstatus)
				  {
				    bitstatus = SET;
				  }
				  else
				  {
				    bitstatus = RESET;
				  }
				  return bitstatus;
				}
				
				/*******************************************************************************
				* Function Name  : RTC_ClearITPendingBit
				* Description    : Clears the RTC抯 interrupt pending bits.
				* Input          : - RTC_IT: specifies the interrupt pending bit to clear.
				*                    This parameter can be any combination of the following values:
				*                       - RTC_IT_OW: Overflow interrupt
				*                       - RTC_IT_ALR: Alarm interrupt
				*                       - RTC_IT_SEC: Second interrupt
				* Output         : None
				* Return         : None
				*******************************************************************************/
				void RTC_ClearITPendingBit(u16 RTC_IT)
				{
				  /* Check the parameters */
				  assert(IS_RTC_IT(RTC_IT));  
				  
				  /* Clear the coressponding RTC pending bit */
				  RTC->CRL &= (u16)~RTC_IT;
				}
				
				/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
							

相关资源