/**
******************************************************************************
* @file stm32f10x_tim.c
* @author MCD Application Team
* @version V3.5.0
* @date 11-March-2011
* @brief This file provides all the TIM firmware functions.
******************************************************************************
* @attention
*
* 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 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_tim.h"
#include "stm32f10x_rcc.h"
/** @addtogroup STM32F10x_StdPeriph_Driver
* @{
*/
/** @defgroup TIM
* @brief TIM driver modules
* @{
*/
/** @defgroup TIM_Private_TypesDefinitions
* @{
*/
/**
* @}
*/
/** @defgroup TIM_Private_Defines
* @{
*/
/* ---------------------- TIM registers bit mask ------------------------ */
#define SMCR_ETR_Mask ((uint16_t)0x00FF)
#define CCMR_Offset ((uint16_t)0x0018)
#define CCER_CCE_Set ((uint16_t)0x0001)
#define CCER_CCNE_Set ((uint16_t)0x0004)
/**
* @}
*/
/** @defgroup TIM_Private_Macros
* @{
*/
/**
* @}
*/
/** @defgroup TIM_Private_Variables
* @{
*/
/**
* @}
*/
/** @defgroup TIM_Private_FunctionPrototypes
* @{
*/
static void TI1_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
uint16_t TIM_ICFilter);
static void TI2_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
uint16_t TIM_ICFilter);
static void TI3_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
uint16_t TIM_ICFilter);
static void TI4_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,
uint16_t TIM_ICFilter);
/**
* @}
*/
/** @defgroup TIM_Private_Macros
* @{
*/
/**
* @}
*/
/** @defgroup TIM_Private_Variables
* @{
*/
/**
* @}
*/
/** @defgroup TIM_Private_FunctionPrototypes
* @{
*/
/**
* @}
*/
/** @defgroup TIM_Private_Functions
* @{
*/
/**
* @brief Deinitializes the TIMx peripheral registers to their default reset values.
* @param TIMx: where x can be 1 to 17 to select the TIM peripheral.
* @retval None
*/
void TIM_DeInit(TIM_TypeDef* TIMx)
{
/* Check the parameters */
assert_param(IS_TIM_ALL_PERIPH(TIMx));
if (TIMx == TIM1)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE);
}
else if (TIMx == TIM2)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE);
}
else if (TIMx == TIM3)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE);
}
else if (TIMx == TIM4)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, DISABLE);
}
else if (TIMx == TIM5)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, DISABLE);
}
else if (TIMx == TIM6)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, DISABLE);
}
else if (TIMx == TIM7)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, DISABLE);
}
else if (TIMx == TIM8)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, DISABLE);
}
else if (TIMx == TIM9)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM9, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM9, DISABLE);
}
else if (TIMx == TIM10)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, DISABLE);
}
else if (TIMx == TIM11)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM11, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM11, DISABLE);
}
else if (TIMx == TIM12)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM12, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM12, DISABLE);
}
else if (TIMx == TIM13)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM13, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM13, DISABLE);
}
else if (TIMx == TIM14)
{
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, DISABLE);
}
else if (TIMx == TIM15)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM15, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM15, DISABLE);
}
else if (TIMx == TIM16)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM16, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM16, DISABLE);
}
else
{
if (TIMx == TIM17)
{
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM17, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM17, DISABLE);
}
}
}
/**
* @brief Initializes the TIMx Time Base Unit peripheral according to
* the specified parameters in the TIM_TimeBaseInitStruct.
* @param TIMx: where x can be 1 to 17 to select the TIM peripheral.
* @param TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef
* structure that contains the configuration information for the
* specified TIM peripheral.
* @retval None
*/
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
{
uint16_t tmpcr1 = 0;
/* Check the parameters */
assert_param(IS_TIM_ALL_PERIPH(TIMx));
assert_param(IS_TIM_COUNTER_MODE(TIM_TimeBaseInitStruct->TIM_CounterMode));
assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct->TIM_ClockDivision));
tmpcr1 = TIMx->CR1;
if((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM2) || (TIMx == TIM3)||
(TIMx == TIM4) || (TIMx == TIM5))
{
/* Select the Counter Mode */
tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_CR1_DIR | TIM_CR1_CMS)));
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode;
}
if((TIMx != TIM6) && (TIMx != TIM7))
{
/* Set the clock division */
tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CR1_CKD));
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision;
}
TIMx->CR1 = tmpcr1;
/* Set the Autoreload value */
TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ;
/* Set the Prescaler value */
TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler;
if ((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM15)|| (TIMx == TIM16) || (TIMx == TIM17))
{
/* Set the Repetition Counter value */
TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter;
}
/* Generate an update event to reload the Prescaler and the Repetition counter
values immediately */
TIMx->EGR = TIM_PSCReloadMode_Immediate;
}
/**
* @brief Initializes the TIMx Channel1 according to the specified
* parameters in the TIM_OCInitStruct.
* @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral.
* @param TIM_OCInitStru
没有合适的资源?快使用搜索试试~ 我知道了~
STC51+STM32单片机技术实验例程源码(14例)+设计说明文档资料.zip
共2209个文件
s:462个
h:449个
c:419个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 83 浏览量
2022-04-10
17:53:49
上传
评论 2
收藏 143.58MB ZIP 举报
温馨提示
STC51+STM32单片机技术实验例程源码(14例)+设计说明文档资料 01 单片机概述 02 51单片机闪烁灯 03 51单片机定时器 04 51单片机串行口 05 STM32固件库概述 06 STM32的LED灯 07 蓝桥杯竞赛LCD例程 08 STM32外部中断 09 STM32基本定时器 10 PWM输出 11 STM32串口 12 STM32模数转换 13 EEPROM存储器 14 STM32实时时钟
资源推荐
资源详情
资源评论
收起资源包目录
STC51+STM32单片机技术实验例程源码(14例)+设计说明文档资料.zip (2209个子文件)
misc.__i 391B
stm32f10x_it.__i 386B
main.__i 354B
main.__i 354B
i2c.__i 350B
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.uvgui.Administrator 66KB
CT117E-LCD.axf 335KB
CT117E-LCD.axf 334KB
CT117E-LCD.axf 328KB
CT117E-LCD.axf 327KB
CT117E-LCD.axf 315KB
CT117E-LCD.axf 301KB
CT117E-LCD.axf 301KB
CT117E-LCD.axf 298KB
CT117E-LCD.axf 289KB
CT117E-LCD.axf 285KB
CT117E-LCD.axf 284KB
CT117E-LCD.axf 283KB
CT117E-LCD.axf 282KB
CT117E-LCD.axf 255KB
CT117E-LCD.uvgui_hp.bak 72KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_hp.bak 71KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_z.bak 70KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD.uvgui_Administrator.bak 66KB
CT117E-LCD_uvopt.bak 66KB
CT117E-LCD_uvopt.bak 65KB
CT117E-LCD_uvopt.bak 64KB
CT117E-LCD_uvopt.bak 63KB
CT117E-LCD_uvopt.bak 63KB
CT117E-LCD_uvopt.bak 63KB
CT117E-LCD_uvopt.bak 62KB
CT117E-LCD_uvopt.bak 62KB
CT117E-LCD_uvopt.bak 61KB
CT117E-LCD_uvopt.bak 61KB
CT117E-LCD_uvopt.bak 61KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 17KB
CT117E-LCD_uvproj.bak 16KB
CT117E-LCD_uvproj.bak 16KB
CT117E-LCD_uvproj.bak 16KB
CT117E-LCD_uvproj.bak 16KB
CT117E-LCD_uvproj.bak 16KB
CT117E-LCD_uvproj.bak 16KB
CT117E-LCD_uvproj.bak 16KB
共 2209 条
- 1
- 2
- 3
- 4
- 5
- 6
- 23
资源评论
- niniyannizi2023-01-10资源很不错,内容和描述一致,值得借鉴,赶紧学起来!
- 2301_819496772024-07-27资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
探索者我有我路向
- 粉丝: 331
- 资源: 2100
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功