/**
******************************************************************************
* @file stm8l10x_tim2.c
* @brief This file contains all the functions for the TIM2 peripheral.
* @author STMicroelectronics - MCD Application Team
* @version V1.1.0
* @date 09/14/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>© COPYRIGHT 2009 STMicroelectronics</center></h2>
* @image html logo.bmp
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm8l10x_tim2.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
static void TI1_Config(TIM2_ICPolarity_TypeDef TIM2_ICPolarity,
TIM2_ICSelection_TypeDef TIM2_ICSelection,
uint8_t TIM2_ICFilter);
static void TI2_Config(TIM2_ICPolarity_TypeDef TIM2_ICPolarity,
TIM2_ICSelection_TypeDef TIM2_ICSelection,
uint8_t TIM2_ICFilter);
/**
* @addtogroup TIM2_Public_Functions
* @{
*/
/**
* @brief Deinitializes the TIM2 peripheral registers to their default reset values.
* @par Parameters:
* None
* @retval None
*/
void TIM2_DeInit(void)
{
TIM2->CR1 = TIM_CR1_RESET_VALUE;
TIM2->CR2 = TIM_CR2_RESET_VALUE;
TIM2->SMCR = TIM_SMCR_RESET_VALUE;
TIM2->ETR = TIM_ETR_RESET_VALUE;
TIM2->IER = TIM_IER_RESET_VALUE;
TIM2->SR2 = TIM_SR2_RESET_VALUE;
/* Disable channels */
TIM2->CCER1 = TIM_CCER1_RESET_VALUE;
/* Configure channels as inputs: it is necessary if lock level is equal to 2 or 3 */
TIM2->CCMR1 = 0x01;/*TIM2_ICxSource_TIxFPx */
TIM2->CCMR2 = 0x01;/*TIM2_ICxSource_TIxFPx */
/* Then reset channel registers: it also works if lock level is equal to 2 or 3 */
TIM2->CCER1 = TIM_CCER1_RESET_VALUE;
TIM2->CCMR1 = TIM_CCMR1_RESET_VALUE;
TIM2->CCMR2 = TIM_CCMR2_RESET_VALUE;
TIM2->CNTRH = TIM_CNTRH_RESET_VALUE;
TIM2->CNTRL = TIM_CNTRL_RESET_VALUE;
TIM2->PSCR = TIM_PSCR_RESET_VALUE;
TIM2->ARRH = TIM_ARRH_RESET_VALUE;
TIM2->ARRL = TIM_ARRL_RESET_VALUE;
TIM2->CCR1H = TIM_CCR1H_RESET_VALUE;
TIM2->CCR1L = TIM_CCR1L_RESET_VALUE;
TIM2->CCR2H = TIM_CCR2H_RESET_VALUE;
TIM2->CCR2L = TIM_CCR2L_RESET_VALUE;
TIM2->OISR = TIM_OISR_RESET_VALUE;
TIM2->EGR = 0x01;/*TIM_EGR_UG;*/
TIM2->BKR = TIM_BKR_RESET_VALUE;
TIM2->SR1 = TIM_SR1_RESET_VALUE;
}
/**
* @brief Initializes the TIM2 Time Base Unit according to the specified parameters.
* @param[in] TIM2_Prescaler : This parameter can be any member of the @Ref TIM2_Prescaler_TypeDef enumeration.
* @param[in] TIM2_CounterMode : This parameter can be any member of the @Ref TIM2_CounterMode_TypeDef enumeration.
* @param[in] TIM2_Period : This parameter must be a value between 0x0000 and 0xFFFF.
* @retval None
*/
void TIM2_TimeBaseInit(TIM2_Prescaler_TypeDef TIM2_Prescaler,
TIM2_CounterMode_TypeDef TIM2_CounterMode,
uint16_t TIM2_Period)
{
assert_param(IS_TIM2_PRESCALER(TIM2_Prescaler));
assert_param(IS_TIM2_COUNTER_MODE(TIM2_CounterMode));
/* Set the Autoreload value */
TIM2->ARRH = (uint8_t)(TIM2_Period >> 8) ;
TIM2->ARRL = (uint8_t)(TIM2_Period);
/* Set the Prescaler value */
TIM2->PSCR = (uint8_t)(TIM2_Prescaler);
/* Select the Counter Mode */
TIM2->CR1 &= (uint8_t)((uint8_t)(~TIM_CR1_CMS)) & ((uint8_t)(~TIM_CR1_DIR));
TIM2->CR1 |= (uint8_t)(TIM2_CounterMode);
}
/**
* @brief Initializes the TIM2 Channel1 according to the specified parameters.
* @param[in] TIM2_OCMode : This parameter can be any member of the @Ref TIM2_OCMode_TypeDef enumeration.
* @param[in] TIM2_OutputState : This parameter can be any member of the @Ref TIM2_OutputState_TypeDef enumeration.
* @param[in] TIM2_Pulse : This parameter must be a value between 0x0000 and 0xFFFF.
* @param[in] TIM2_OCPolarity : This parameter can be any member of the @Ref TIM2_OCPolarity_TypeDef enumeration.
* @param[in] TIM2_OCIdleState : This parameter can be any member of the @Ref TIM2_OCIdleState_TypeDef enumeration.
* @retval None
*/
void TIM2_OC1Init(TIM2_OCMode_TypeDef TIM2_OCMode,
TIM2_OutputState_TypeDef TIM2_OutputState,
uint16_t TIM2_Pulse,
TIM2_OCPolarity_TypeDef TIM2_OCPolarity,
TIM2_OCIdleState_TypeDef TIM2_OCIdleState)
{
uint8_t tmpccmr1 = 0;
/* Check the parameters */
assert_param(IS_TIM2_OC_MODE(TIM2_OCMode));
assert_param(IS_TIM2_OUTPUT_STATE(TIM2_OutputState));
assert_param(IS_TIM2_OC_POLARITY(TIM2_OCPolarity));
assert_param(IS_TIM2_OCIDLE_STATE(TIM2_OCIdleState));
tmpccmr1 = TIM2->CCMR1;
/* Disable the Channel 1: Reset the CCE Bit */
TIM2->CCER1 &= (uint8_t)(~TIM_CCER1_CC1E);
/* Reset the Output Compare Bits */
tmpccmr1 &= (uint8_t)(~TIM_CCMR_OCM);
/* Set the Ouput Compare Mode */
tmpccmr1 |= (uint8_t)TIM2_OCMode;
TIM2->CCMR1 = tmpccmr1;
/* Set the Output State */
if (TIM2_OutputState == TIM2_OutputState_Enable)
{
TIM2->CCER1 |= TIM_CCER1_CC1E;
}
else
{
TIM2->CCER1 &= (uint8_t)(~TIM_CCER1_CC1E);
}
/* Set the Output Polarity */
if (TIM2_OCPolarity == TIM2_OCPolarity_Low)
{
TIM2->CCER1 |= TIM_CCER1_CC1P;
}
else
{
TIM2->CCER1 &= (uint8_t)(~TIM_CCER1_CC1P);
}
/* Set the Output Idle state */
if (TIM2_OCIdleState == TIM2_OCIdleState_Set)
{
TIM2->OISR |= TIM_OISR_OIS1;
}
else
{
TIM2->OISR &= (uint8_t)(~TIM_OISR_OIS1);
}
/* Set the Pulse value */
TIM2->CCR1H = (uint8_t)(TIM2_Pulse >> 8);
TIM2->CCR1L = (uint8_t)(TIM2_Pulse);
}
/**
* @brief Initializes the TIM2 Channel2 according to the specified parameters.
* @param[in] TIM2_OCMode : This parameter can be any member of the @Ref TIM2_OCMode_TypeDef enumeration.
* @param[in] TIM2_OutputState : This parameter can be any member of the @Ref TIM2_OutputState_TypeDef enumeration.
* @param[in] TIM2_Pulse : This parameter must be a value between 0x0000 and 0xFFFF.
* @param[in] TIM2_OCPolarity : This parameter can be any member of the @Ref TIM2_OCPolarity_TypeDef enumeration.
* @param[in] TIM2_OCIdleState : This parameter can be any member of the @Ref TIM2_OCIdleState_TypeDef enumeration.
* @retval None
*/
void TIM2_OC2Init(TIM2_OCMode_TypeDef TIM2_OCMode,
TIM2_OutputState_TypeDef TIM2_OutputState,
uint16_t TIM2_Pulse,
TIM2_OCPolarity_TypeDef TIM2_OCPolarity,
TIM2_OCIdleState_TypeDef TIM2_OCIdleState)
{
uint8_t tmpccmr2 = 0;
/* Check the p
STM8L10x_StdPeriph_Driver.rar_lib_stm8l0x_stdperiph_stm8l10X
版权申诉
136 浏览量
2022-09-20
19:34:56
上传
评论
收藏 177KB RAR 举报
寒泊
- 粉丝: 75
- 资源: 1万+
最新资源
- Panoply软件是大名鼎鼎的NASA下属的GISS研究所开发的可视化软件,该软件可以实现对地学常用数据的读取,其中包括netC
- 一些高质量的学习Ruby的资源清单.zip
- 基于STM32智能家居(智能云)
- 适合江苏地带的别墅小院子图纸D038-两层-11.04&11.94米-施工图.dwg
- 农村小别墅图纸四合院图纸D037-两层-13.20&12.90米-施工图.dwg
- 农村别墅系列图纸cad图纸D035-两层-10.20&14.70米- 施工图.dwg
- Verilog硬件仿真过程中出现的X态总结
- 中国各省份2012-2020年政府财政支出占GDP的比重
- 旅游管理系统毕业设计+计算机专业本科毕业设计+Vue+JS框架
- 农村小别墅二层小楼图纸D034-两层-11.40&14.70米- 施工图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈