/**
******************************************************************************
* @file stm8l15x_tim1.c
* @author MCD Application Team
* @version V1.4.0
* @date 09/24/2010
* @brief This file provides all the TIM1 firmware functions.
******************************************************************************
* @copy
*
* 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 2010 STMicroelectronics</center></h2>
*/
/* Includes ------------------------------------------------------------------*/
#include "stm8l15x_tim1.h"
/** @addtogroup STM8L15x_StdPeriph_Driver
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
static void TI1_Config(uint8_t TIM1_ICPolarity, uint8_t TIM1_ICSelection,
uint8_t TIM1_ICFilter);
static void TI2_Config(uint8_t TIM1_ICPolarity, uint8_t TIM1_ICSelection,
uint8_t TIM1_ICFilter);
static void TI3_Config(uint8_t TIM1_ICPolarity, uint8_t TIM1_ICSelection,
uint8_t TIM1_ICFilter);
static void TI4_Config(uint8_t TIM1_ICPolarity, uint8_t TIM1_ICSelection,
uint8_t TIM1_ICFilter);
/**
* @addtogroup TIM1_Public_Functions
* @{
*/
/**
* @brief Deinitializes the TIM1 peripheral registers to their default reset values.
* @param None
* @retval None
*/
void TIM1_DeInit(void)
{
TIM1->CR1 = TIM1_CR1_RESET_VALUE;
TIM1->CR2 = TIM1_CR2_RESET_VALUE;
TIM1->SMCR = TIM1_SMCR_RESET_VALUE;
TIM1->ETR = TIM1_ETR_RESET_VALUE;
TIM1->IER = TIM1_IER_RESET_VALUE;
/* Disable channels */
TIM1->CCER1 = TIM1_CCER1_RESET_VALUE;
TIM1->CCER2 = TIM1_CCER2_RESET_VALUE;
/* Configure channels as inputs: it is necessary if lock level is equal to 2 or 3 */
TIM1->CCMR1 = 0x01;
TIM1->CCMR2 = 0x01;
TIM1->CCMR3 = 0x01;
TIM1->CCMR4 = 0x01;
/* Then reset channel registers: it also works if lock level is equal to 2 or 3 */
TIM1->CCER1 = TIM1_CCER1_RESET_VALUE;
TIM1->CCER2 = TIM1_CCER2_RESET_VALUE;
TIM1->CCMR1 = TIM1_CCMR1_RESET_VALUE;
TIM1->CCMR2 = TIM1_CCMR2_RESET_VALUE;
TIM1->CCMR3 = TIM1_CCMR3_RESET_VALUE;
TIM1->CCMR4 = TIM1_CCMR4_RESET_VALUE;
TIM1->CNTRH = TIM1_CNTRH_RESET_VALUE;
TIM1->CNTRL = TIM1_CNTRL_RESET_VALUE;
TIM1->PSCRH = TIM1_PSCRH_RESET_VALUE;
TIM1->PSCRL = TIM1_PSCRL_RESET_VALUE;
TIM1->ARRH = TIM1_ARRH_RESET_VALUE;
TIM1->ARRL = TIM1_ARRL_RESET_VALUE;
TIM1->CCR1H = TIM1_CCR1H_RESET_VALUE;
TIM1->CCR1L = TIM1_CCR1L_RESET_VALUE;
TIM1->CCR2H = TIM1_CCR2H_RESET_VALUE;
TIM1->CCR2L = TIM1_CCR2L_RESET_VALUE;
TIM1->CCR3H = TIM1_CCR3H_RESET_VALUE;
TIM1->CCR3L = TIM1_CCR3L_RESET_VALUE;
TIM1->CCR4H = TIM1_CCR4H_RESET_VALUE;
TIM1->CCR4L = TIM1_CCR4L_RESET_VALUE;
TIM1->OISR = TIM1_OISR_RESET_VALUE;
TIM1->EGR = 0x01; /* TIM1_EGR_UG */
TIM1->DTR = TIM1_DTR_RESET_VALUE;
TIM1->BKR = TIM1_BKR_RESET_VALUE;
TIM1->RCR = TIM1_RCR_RESET_VALUE;
TIM1->SR1 = TIM1_SR1_RESET_VALUE;
TIM1->SR2 = TIM1_SR2_RESET_VALUE;
}
/**
* @brief Initializes the TIM1 Time Base Unit according to the specified parameters.
* @param TIM1_Prescaler specifies the Prescaler value.
* @param TIM1_CounterMode specifies the counter mode from
* @ref TIM1_CounterMode_TypeDef .
* @param TIM1_Period specifies the Period value.
* @param TIM1_RepetitionCounter specifies the Repetition counter value
* @retval None
*/
void TIM1_TimeBaseInit(uint16_t TIM1_Prescaler,
TIM1_CounterMode_TypeDef TIM1_CounterMode,
uint16_t TIM1_Period,
uint8_t TIM1_RepetitionCounter)
{
/* Check parameters */
assert_param(IS_TIM1_COUNTER_MODE(TIM1_CounterMode));
/* Set the Autoreload value */
TIM1->ARRH = (uint8_t)(TIM1_Period >> 8);
TIM1->ARRL = (uint8_t)(TIM1_Period);
/* Set the Prescaler value */
TIM1->PSCRH = (uint8_t)(TIM1_Prescaler >> 8);
TIM1->PSCRL = (uint8_t)(TIM1_Prescaler);
/* Select the Counter Mode */
TIM1->CR1 = (uint8_t)((uint8_t)(TIM1->CR1 & (uint8_t)(~(TIM1_CR1_CMS | TIM1_CR1_DIR)))
| (uint8_t)(TIM1_CounterMode));
/* Set the Repetition Counter value */
TIM1->RCR = TIM1_RepetitionCounter;
}
/**
* @brief Initializes the TIM1 Channel1 according to the specified parameters.
* @param TIM1_OCMode specifies the Output Compare mode from
* @ref TIM1_OCMode_TypeDef.
* @param TIM1_OutputState specifies the Output State from
* @ref TIM1_OutputState_TypeDef.
* @param TIM1_OutputNState specifies the Complementary Output State from
* @ref TIM1_OutputNState_TypeDef.
* @param TIM1_Pulse specifies the Pulse width value.
* @param TIM1_OCPolarity specifies the Output Compare Polarity from
* @ref TIM1_OCPolarity_TypeDef.
* @param TIM1_OCNPolarity specifies the Complementary Output Compare
* Polarity from @ref TIM1_OCNPolarity_TypeDef.
* @param TIM1_OCIdleState specifies the Output Compare Idle State from
* @ref TIM1_OCIdleState_TypeDef.
* @param TIM1_OCNIdleState specifies the Complementary Output Compare
* Idle State from @ref TIM1_OCIdleState_TypeDef.
* @retval None
*/
void TIM1_OC1Init(TIM1_OCMode_TypeDef TIM1_OCMode,
TIM1_OutputState_TypeDef TIM1_OutputState,
TIM1_OutputNState_TypeDef TIM1_OutputNState,
uint16_t TIM1_Pulse,
TIM1_OCPolarity_TypeDef TIM1_OCPolarity,
TIM1_OCNPolarity_TypeDef TIM1_OCNPolarity,
TIM1_OCIdleState_TypeDef TIM1_OCIdleState,
TIM1_OCNIdleState_TypeDef TIM1_OCNIdleState)
{
/* Check the parameters */
assert_param(IS_TIM1_OC_MODE(TIM1_OCMode));
assert_param(IS_TIM1_OUTPUT_STATE(TIM1_OutputState));
assert_param(IS_TIM1_OUTPUTN_STATE(TIM1_OutputNState));
assert_param(IS_TIM1_OC_POLARITY(TIM1_OCPolarity));
assert_param(IS_TIM1_OCN_POLARITY(TIM1_OCNPolarity));
assert_param(IS_TIM1_OCIDLE_STATE(TIM1_OCIdleState));
assert_param(IS_TIM1_OCNIDLE_STATE(TIM1_OCNIdleState));
/* Disable the Channel 1: Reset the CCE Bit, Set the Output State ,
the Output N State, the Output Polarity & the Output N Polarity*/
TIM1->CCER1 &= (uint8_t)(~(TIM1_CCER1_CC1E | TIM1_CCER1_CC1NE
| TIM1_CCER1_CC1P | TIM1_CCER1_CC1NP));
/* Set the Output State & Set the Output N State & Set the Output Polarity
& Set the Output N Polarity */
TIM1->CCER1 |= (uint8_t)((uint8_t)((uint8_t)(TIM1_OutputState & TIM1_CCER1_CC1E)
| (uint8_t)(TIM1_OutputNState & TIM1_CCER1_CC1NE))
| (uint8_t)( (uint8_t)(TIM1_OCPolarity & TIM1_CCER1_CC1P)
| (uint8_t)(TIM1_OCNPolarity & TIM1_CCER1_CC1NP)));
/* Reset the Output Compare Bits & Set the Ouput Compare Mode */
TIM1->CCMR1 = (uint8_t)((uint8_t)(TIM1->CCMR1 & (uint8_t)(~TIM1_CCMR_OCM))
| (uint8_t)TIM1_OCMode);
/* Reset the Output Idle state & the Outp
没有合适的资源?快使用搜索试试~ 我知道了~
基于IAR的STM8L152的USART+ADC(双通道)带DMA+RTC定时唤醒+外部中断唤醒+低功耗HALT模式(源码)
共140个文件
h:42个
o:42个
c:42个
5星 · 超过95%的资源 需积分: 50 368 下载量 140 浏览量
2014-03-18
19:38:06
上传
评论 9
收藏 632KB ZIP 举报
温馨提示
基于IAR的STM8L152的USART+ADC(双通道)带DMA+RTC定时唤醒+外部中断唤醒+低功耗HALT模式(源码)
资源推荐
资源详情
资源评论
收起资源包目录
基于IAR的STM8L152的USART+ADC(双通道)带DMA+RTC定时唤醒+外部中断唤醒+低功耗HALT模式(源码) (140个子文件)
CyProject.cspy.bat 1KB
stm8l15x_tim1.c 79KB
stm8l15x_rtc.c 57KB
stm8l15x_tim2.c 49KB
stm8l15x_tim5.c 49KB
stm8l15x_tim3.c 49KB
stm8l15x_i2c.c 41KB
stm8l15x_usart.c 26KB
stm8l15x_flash.c 24KB
stm8l15x_dac.c 21KB
stm8l15x_clk.c 20KB
stm8l15x_adc.c 20KB
stm8l_discovery_lcd.c 17KB
stm8l15x_spi.c 16KB
stm8l15x_comp.c 16KB
stm8l15x_dma.c 16KB
stm8l15x_tim4.c 15KB
stm8l15x_it.c 13KB
stm8l15x_exti.c 13KB
stm8l15x_lcd.c 12KB
stm8l15x_syscfg.c 11KB
stm8l15x_aes.c 10KB
stm8l15x_itc.c 10KB
stm8l15x_gpio.c 9KB
stm8l15x_pwr.c 6KB
stm8l15x_wfe.c 6KB
stm8l15x_beep.c 5KB
stm8l15x_wwdg.c 4KB
stm8l15x_irtim.c 4KB
stm8l15x_iwdg.c 3KB
delay.c 3KB
stm8l15x_rst.c 3KB
adc.c 2KB
app.c 2KB
sysclk.c 2KB
uart.c 1KB
eeprom.c 1KB
rtc.c 1KB
WirelessProtocol.c 917B
exit.c 313B
bsp.c 258B
Led.c 110B
dma.c 61B
CyProject.dbgdt 5KB
CyProject.dep 40KB
CyProject.dni 1KB
CyProject.ewd 11KB
CyProject.ewp 44KB
CY.eww 163B
Cyeww.eww 163B
stm8l15x.h 121KB
stm8l15x_rtc.h 34KB
stm8l15x_tim1.h 34KB
stm8l15x_i2c.h 34KB
stm8l15x_tim5.h 27KB
stm8l15x_tim2.h 27KB
stm8l15x_tim3.h 27KB
stm8l15x_lcd.h 21KB
stm8l15x_syscfg.h 19KB
stm8l15x_clk.h 18KB
stm8l15x_adc.h 16KB
stm8l15x_usart.h 15KB
stm8l15x_spi.h 14KB
stm8l15x_dma.h 13KB
stm8l15x_flash.h 13KB
stm8l15x_tim4.h 11KB
stm8l15x_itc.h 11KB
stm8l15x_dac.h 10KB
stm8l15x_comp.h 10KB
stm8l15x_exti.h 9KB
stm8l15x_wfe.h 8KB
stm8l15x_gpio.h 6KB
stm8l15x_aes.h 5KB
stm8l15x_iwdg.h 5KB
stm8l15x_pwr.h 4KB
stm8l15x_it.h 4KB
stm8l15x_beep.h 4KB
stm8l15x_conf.h 3KB
stm8l15x_rst.h 3KB
stm8l15x_wwdg.h 3KB
stm8l15x_irtim.h 2KB
stm8l_discovery_lcd.h 2KB
app.h 841B
bsp.h 312B
Led.h 212B
rtc.h 172B
uart.h 164B
adc.h 144B
delay.h 112B
dma.h 89B
exit.h 89B
sysclk.h 73B
CyProject.hex 35KB
cspycomm.log 39B
stm8l15x_tim1.o 142KB
stm8l15x_tim2.o 100KB
stm8l15x_tim5.o 100KB
stm8l15x_tim3.o 100KB
stm8l15x_rtc.o 88KB
stm8l15x_i2c.o 65KB
共 140 条
- 1
- 2
by-wang
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言基础-C语言编程基础之Leetcode编程题解之第39题组合总和.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第38题外观数列.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第37题解数独.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第36题有效的数独.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第35题搜索插入位置.zip
- index.wxml
- C语言基础-C语言编程基础之Leetcode编程题解之第33题搜索旋转排序数组.zip
- 基于Python实现的手写数字识别系统源码.zip
- 从网页提取禁止转载的文字
- C语言基础-C语言编程基础之Leetcode编程题解之第32题最长有效括号.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页