/**
******************************************************************************
* @file stm8l15x_irtim.c
* @author MCD Application Team
* @version V1.6.1
* @date 30-September-2014
* @brief This file provides firmware functions to configure the IRTIM peripheral.
*
* @verbatim
*
* ===================================================================
* How to use this driver
* ===================================================================
* This driver provides functions to:
* 1. Enable the IRTIM peripheral
* 2. Enable the high sink mode on the IRTIM pin
*
* @endverbatim
*
******************************************************************************
* @attention
*
*
© COPYRIGHT 2014 STMicroelectronics
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm8l15x_irtim.h"
/** @addtogroup STM8L15x_StdPeriph_Driver
* @{
*/
/** @defgroup IRTIM
* @brief IRTIM driver modules
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/** @defgroup IRTIM_Private_Functions
* @{
*/
/** @defgroup IRTIM_Group1 IRTIM configuration functions
* @brief IRTIM configuration functions
*
@verbatim
===============================================================================
IRTIM configuration functions
===============================================================================
===================================================================
IRTIM Driver: how to use it
===================================================================
To generate the infrared remote control signal, perform the following steps:
1. Use TIM2 channel 1 to generate the high frequency carrier signal
by calling TIM2_OC1Init()
2. Use TIM3 channel 1 to generate the modulation envelope by
calling TIM3_OC1Init()
3. Enable the IRTIM peripheral using IRTIM_Cmd()
Note1: When IRTIM peripheral is enabled, TIM2 channel 1 and TIM3 channel 1
become inactive (no signal on output) and can be used as GPIO.
Note2: The high sink LED driver capability (only available on the IRTIM pin)
can be activated using IRTIM_HighSinkODCmd() to sink the high
current needed to directly control an infrared LED
@endverbatim
* @{
*/
/**
* @brief Deinitializes the IRTIM peripheral registers to their default reset values.
* @param None
* @retval None
*/
void IRTIM_DeInit(void)
{
IRTIM->CR = IRTIM_CR_RESET_VALUE;
}
/**
* @brief Enables or disables the IRTIM peripheral.
* @param NewState : The new state of the IRTIM peripheral.
* This parameter can be: ENABLE or DISABLE.
* @retval None
*/
void IRTIM_Cmd(FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));
/* set or Reset the EN Bit */
if (NewState == DISABLE)
{
IRTIM->CR &= (uint8_t)(~IRTIM_CR_EN) ;
}
else
{
IRTIM->CR |= IRTIM_CR_EN ;
}
}
/**
* @brief Enables or disables the High sink open drain buffer of the IRTIM peripheral.
* @param NewState : The new state of the High sink open drain buffer.
* This parameter can be: ENABLE or DISABLE.
* @retval None
*/
void IRTIM_HighSinkODCmd(FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));
/* set or Reset the EN Bit */
if (NewState == DISABLE)
{
IRTIM->CR &= (uint8_t)(~IRTIM_CR_HSEN) ;
}
else
{
IRTIM->CR |= IRTIM_CR_HSEN ;
}
}
/**
* @}
*/
/** @defgroup IRTIM_Group2 IRITM status management functions
* @brief IRITM status management functions
*
@verbatim
===============================================================================
IRITM status management functions
===============================================================================
@endverbatim
* @{
*/
/**
* @brief Checks whether the IRTIM device is enabled or not.
* @param None
* @retval state of the IRTIM device.
*/
FunctionalState IRTIM_GetStatus(void)
{
return ((FunctionalState) (IRTIM->CR & IRTIM_CR_EN));
}
/**
* @brief Checks whether the IRTIM High Sink Open Drain buffer is Enabled or not.
* @param None
* @retval state of High Sink Open Drain buffer.
*/
FunctionalState IRTIM_GetHighSinkODStatus(void)
{
return ((FunctionalState)(IRTIM->CR & IRTIM_CR_HSEN));
}
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/