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

📄 stm32f0xx_cec.c

📁 stm32f0固件库
💻 C
📖 第 1 页 / 共 2 页
字号:
  * @brief  Returns the most recent received data by the CEC peripheral.
  * @param  None
  * @retval The received data.
  */
uint8_t CEC_ReceiveData(void)
{
  /* Receive Data */
  return (uint8_t)(CEC->RXDR);
}

/**
  * @brief  Starts a new message.
  * @param  None
  * @retval None
  */
void CEC_StartOfMessage(void)
{
  /* Starts of new message */
  CEC->CR |= CEC_CR_TXSOM; 
}

/**
  * @brief  Transmits message with an EOM bit.
  * @param  None.
  * @retval None
  */
void CEC_EndOfMessage(void)
{
  /* The data byte will be transmitted with an EOM bit */
  CEC->CR |= CEC_CR_TXEOM;
}

/**
  * @}
  */

/** @defgroup CEC_Group3 Interrupts and flags management functions
 *  @brief    Interrupts and flags management functions
*
@verbatim
 ===============================================================================
                            ##### Interrupts and flags management functions ##### 
 ===============================================================================
    [..] This section provides functions allowing to configure the CEC Interrupts
         sources and check or clear the flags or pending bits status.
    [..] The user should identify which mode will be used in his application to manage
         the communication: Polling mode or Interrupt mode.
  
    [..] In polling mode, the CEC can be managed by the following flags:
            (+) CEC_FLAG_TXACKE : to indicate a missing acknowledge in transmission mode.
            (+) CEC_FLAG_TXERR  : to indicate an error occurs during transmission mode.
                                  The initiator detects low impedance in the CEC line.
            (+) CEC_FLAG_TXUDR  : to indicate if an underrun error occurs in transmission mode.
                                  The transmission is enabled while the software has not yet 
                                  loaded any value into the TXDR register.
            (+) CEC_FLAG_TXEND  : to indicate the end of successful transmission.
            (+) CEC_FLAG_TXBR   : to indicate the next transmission data has to be written to TXDR.
            (+) CEC_FLAG_ARBLST : to indicate arbitration lost in the case of two CEC devices
                                  starting at the same time.
            (+) CEC_FLAG_RXACKE : to indicate a missing acknowledge in receive mode.
            (+) CEC_FLAG_LBPE   : to indicate a long bit period error generated during receive mode.
            (+) CEC_FLAG_SBPE   : to indicate a short bit period error generated during receive mode.
            (+) CEC_FLAG_BRE    : to indicate a bit rising error generated during receive mode.
            (+) CEC_FLAG_RXOVR  : to indicate if an overrun error occur while receiving a CEC message.
                                  A byte is not yet received while a new byte is stored in the RXDR register.
            (+) CEC_FLAG_RXEND  : to indicate the end Of reception
            (+) CEC_FLAG_RXBR   : to indicate a new byte has been received from the CEC line and 
                                  stored into the RXDR buffer.
    [..]
           (@)In this Mode, it is advised to use the following functions:
              FlagStatus CEC_GetFlagStatus(uint16_t CEC_FLAG);
              void CEC_ClearFlag(uint16_t CEC_FLAG);

    [..] In Interrupt mode, the CEC can be managed by the following interrupt sources:
           (+) CEC_IT_TXACKE : to indicate a TX Missing acknowledge 
           (+) CEC_IT_TXACKE : to indicate a missing acknowledge in transmission mode.
           (+) CEC_IT_TXERR  : to indicate an error occurs during transmission mode.
                               The initiator detects low impedance in the CEC line.
           (+) CEC_IT_TXUDR  : to indicate if an underrun error occurs in transmission mode.
                               The transmission is enabled while the software has not yet 
                               loaded any value into the TXDR register.
           (+) CEC_IT_TXEND  : to indicate the end of successful transmission.
           (+) CEC_IT_TXBR   : to indicate the next transmission data has to be written to TXDR register.
           (+) CEC_IT_ARBLST : to indicate arbitration lost in the case of two CEC devices
                                starting at the same time.
           (+) CEC_IT_RXACKE : to indicate a missing acknowledge in receive mode.
           (+) CEC_IT_LBPE   : to indicate a long bit period error generated during receive mode.
           (+) CEC_IT_SBPE   : to indicate a short bit period error generated during receive mode.
           (+) CEC_IT_BRE    : to indicate a bit rising error generated during receive mode.
           (+) CEC_IT_RXOVR  : to indicate if an overrun error occur while receiving a CEC message.
                               A byte is not yet received while a new byte is stored in the RXDR register.
           (+) CEC_IT_RXEND  : to indicate the end Of reception
           (+) CEC_IT_RXBR   : to indicate a new byte has been received from the CEC line and 
                                stored into the RXDR buffer.
    [..]
           (@)In this Mode it is advised to use the following functions:
              void CEC_ITConfig( uint16_t CEC_IT, FunctionalState NewState);
              ITStatus CEC_GetITStatus(uint16_t CEC_IT);
              void CEC_ClearITPendingBit(uint16_t CEC_IT);
              

@endverbatim
  * @{
  */

/**
  * @brief  Enables or disables the selected CEC interrupts.
  * @param  CEC_IT: specifies the CEC interrupt source to be enabled.
  *         This parameter can be any combination of the following values:
  *     @arg CEC_IT_TXACKE: Tx Missing acknowledge Error
  *     @arg CEC_IT_TXERR: Tx Error.
  *     @arg CEC_IT_TXUDR: Tx-Buffer Underrun.
  *     @arg CEC_IT_TXEND: End of Transmission (successful transmission of the last byte).
  *     @arg CEC_IT_TXBR: Tx-Byte Request.
  *     @arg CEC_IT_ARBLST: Arbitration Lost
  *     @arg CEC_IT_RXACKE: Rx-Missing Acknowledge
  *     @arg CEC_IT_LBPE: Rx Long period Error
  *     @arg CEC_IT_SBPE: Rx Short period Error
  *     @arg CEC_IT_BRE: Rx Bit Rising Error
  *     @arg CEC_IT_RXOVR: Rx Overrun.
  *     @arg CEC_IT_RXEND: End Of Reception
  *     @arg CEC_IT_RXBR: Rx-Byte Received
  * @param  NewState: new state of the selected CEC interrupts.
  *         This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void CEC_ITConfig(uint16_t CEC_IT, FunctionalState NewState)
{
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  assert_param(IS_CEC_IT(CEC_IT));

  if (NewState != DISABLE)
  {
    /* Enable the selected CEC interrupt */
    CEC->IER |= CEC_IT;
  }
  else
  {
    CEC_IT =~CEC_IT;
    /* Disable the selected CEC interrupt */
    CEC->IER &= CEC_IT;
  }
}

/**
  * @brief  Gets the CEC flag status.
  * @param  CEC_FLAG: specifies the CEC flag to check.
  *     This parameter can be one of the following values:
  *     @arg CEC_FLAG_TXACKE: Tx Missing acknowledge Error
  *     @arg CEC_FLAG_TXERR: Tx Error.
  *     @arg CEC_FLAG_TXUDR: Tx-Buffer Underrun.
  *     @arg CEC_FLAG_TXEND: End of transmission (successful transmission of the last byte).
  *     @arg CEC_FLAG_TXBR: Tx-Byte Request.
  *     @arg CEC_FLAG_ARBLST: Arbitration Lost
  *     @arg CEC_FLAG_RXACKE: Rx-Missing Acknowledge 
  *     @arg CEC_FLAG_LBPE: Rx Long period Error
  *     @arg CEC_FLAG_SBPE: Rx Short period Error
  *     @arg CEC_FLAG_BRE: Rx Bit Rissing Error
  *     @arg CEC_FLAG_RXOVR: Rx Overrun.
  *     @arg CEC_FLAG_RXEND: End Of Reception.
  *     @arg CEC_FLAG_RXBR: Rx-Byte Received.
  * @retval The new state of CEC_FLAG (SET or RESET)
  */
FlagStatus CEC_GetFlagStatus(uint16_t CEC_FLAG) 
{
  FlagStatus bitstatus = RESET;
  
  assert_param(IS_CEC_GET_FLAG(CEC_FLAG));
  
  /* Check the status of the specified CEC flag */
  if ((CEC->ISR & CEC_FLAG) != (uint16_t)RESET)
  {
    /* CEC flag is set */
    bitstatus = SET;
  }
  else
  {
    /* CEC flag is reset */
    bitstatus = RESET;
  }

  /* Return the CEC flag status */
  return  bitstatus;
}

/**
  * @brief  Clears the CEC's pending flags.
  * @param  CEC_FLAG: specifies the flag to clear. 
  *   This parameter can be any combination of the following values:
  *     @arg CEC_FLAG_TXACKE: Tx Missing acknowledge Error
  *     @arg CEC_FLAG_TXERR: Tx Error
  *     @arg CEC_FLAG_TXUDR: Tx-Buffer Underrun
  *     @arg CEC_FLAG_TXEND: End of transmission (successful transmission of the last byte).
  *     @arg CEC_FLAG_TXBR: Tx-Byte Request
  *     @arg CEC_FLAG_ARBLST: Arbitration Lost
  *     @arg CEC_FLAG_RXACKE: Rx Missing Acknowledge 
  *     @arg CEC_FLAG_LBPE: Rx Long period Error
  *     @arg CEC_FLAG_SBPE: Rx Short period Error
  *     @arg CEC_FLAG_BRE: Rx Bit Rising Error
  *     @arg CEC_FLAG_RXOVR: Rx Overrun
  *     @arg CEC_FLAG_RXEND: End Of Reception
  *     @arg CEC_FLAG_RXBR: Rx-Byte Received
  * @retval None
  */
void CEC_ClearFlag(uint32_t CEC_FLAG)
{
  assert_param(IS_CEC_CLEAR_FLAG(CEC_FLAG));

  /* Clear the selected CEC flag */
  CEC->ISR = CEC_FLAG;
}

/**
  * @brief  Checks whether the specified CEC interrupt has occurred or not.
  * @param  CEC_IT: specifies the CEC interrupt source to check. 
  *   This parameter can be one of the following values:
  *     @arg CEC_IT_TXACKE: Tx Missing acknowledge Error
  *     @arg CEC_IT_TXERR: Tx Error.
  *     @arg CEC_IT_TXUDR: Tx-Buffer Underrun.
  *     @arg CEC_IT_TXEND: End of transmission (successful transmission of the last byte).
  *     @arg CEC_IT_TXBR: Tx-Byte Request.
  *     @arg CEC_IT_ARBLST: Arbitration Lost.
  *     @arg CEC_IT_RXACKE: Rx-Missing Acknowledge.
  *     @arg CEC_IT_LBPE: Rx Long period Error.
  *     @arg CEC_IT_SBPE: Rx Short period Error.
  *     @arg CEC_IT_BRE: Rx Bit Rising Error.
  *     @arg CEC_IT_RXOVR: Rx Overrun.
  *     @arg CEC_IT_RXEND: End Of Reception.
  *     @arg CEC_IT_RXBR: Rx-Byte Received 
  * @retval The new state of CEC_IT (SET or RESET).
  */
ITStatus CEC_GetITStatus(uint16_t CEC_IT)
{
  ITStatus bitstatus = RESET;
  uint32_t enablestatus = 0;

  /* Check the parameters */
  assert_param(IS_CEC_GET_IT(CEC_IT));

  /* Get the CEC IT enable bit status */
  enablestatus = (CEC->IER & CEC_IT);

  /* Check the status of the specified CEC interrupt */
  if (((CEC->ISR & CEC_IT) != (uint32_t)RESET) && enablestatus)
  {
    /* CEC interrupt is set */
    bitstatus = SET;
  }
  else
  {
    /* CEC interrupt is reset */
    bitstatus = RESET;
  }

  /* Return the CEC interrupt status */
  return  bitstatus;
}

/**
  * @brief  Clears the CEC's interrupt pending bits.
  * @param  CEC_IT: specifies the CEC interrupt pending bit to clear.
  *   This parameter can be any combination of the following values:
  *     @arg CEC_IT_TXACKE: Tx Missing acknowledge Error
  *     @arg CEC_IT_TXERR: Tx Error
  *     @arg CEC_IT_TXUDR: Tx-Buffer Underrun
  *     @arg CEC_IT_TXEND: End of Transmission
  *     @arg CEC_IT_TXBR: Tx-Byte Request
  *     @arg CEC_IT_ARBLST: Arbitration Lost
  *     @arg CEC_IT_RXACKE: Rx-Missing Acknowledge
  *     @arg CEC_IT_LBPE: Rx Long period Error
  *     @arg CEC_IT_SBPE: Rx Short period Error
  *     @arg CEC_IT_BRE: Rx Bit Rising Error
  *     @arg CEC_IT_RXOVR: Rx Overrun
  *     @arg CEC_IT_RXEND: End Of Reception
  *     @arg CEC_IT_RXBR: Rx-Byte Received
  * @retval None
  */
void CEC_ClearITPendingBit(uint16_t CEC_IT)
{
  assert_param(IS_CEC_IT(CEC_IT));

  /* Clear the selected CEC interrupt pending bits */
  CEC->ISR = CEC_IT;
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

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

⌨️ 快捷键说明

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