初级会员

- 积分
- 77
- 金钱
- 77
- 注册时间
- 2015-9-25
- 在线时间
- 4 小时
|
5金钱
STM32F10X_TIM.C /.H 文件, 以及STM32F10X.H文件中都可以看出STM32F10X系列最多可由17个timer(不含IWDG,WWDG,SYS_TICK,因为它们有对应的BSP文件)
但是翻遍STM32的选型手册,STM32F10X系列中timer最多的也就是14个(型号:STM32F103VG,STM32F103ZG)
我看的选型手册是:<2013年11月STM8和STM32产品选型手册>
//--------STM32F10X_TIM.C文件中------------------------------
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)) //是通用和高级定时器(不是基础定时器6,7)
{
/* Select the Counter Mode */
tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_CR1_DIR | TIM_CR1_CMS))); //清除CounterDirection和CenterAlignMode
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode; //写入新值
}
if((TIMx != TIM6) && (TIMx != TIM7)) //不是基础定时器
{
/* Set the clock division */
tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CR1_CKD)); //清除ClockDivison(CK_INT与数字滤波器采样频率之间的倍频比例)
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision; //写入新值
}
TIMx->CR1 = tmpcr1; //设置完后写入CR1
/* Set the Autoreload value */
TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ; //设置自动重装载reg
/* Set the Prescaler value */
TIMx-> SC = TIM_TimeBaseInitStruct->TIM_Prescaler; //设置分频reg
if ((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM15)|| (TIMx == TIM16) || (TIMx == TIM17)) //是高级定时器
{
/* Set the Repetition Counter value */
TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter; //设置重复计数(每次timer上/下溢出后都计数一次)(相当于在timer外又增加了一层循环)
}
/* Generate an update event to reload the Prescaler and the Repetition counter
values immediately */
TIMx->EGR = TIM_PSCReloadMode_Immediate; //立即产生更新事件
}
//---------在STM32F10X.H中----------------------------------
#define TIM2 ((TIM_TypeDef *) TIM2_BASE)
#define TIM3 ((TIM_TypeDef *) TIM3_BASE)
#define TIM4 ((TIM_TypeDef *) TIM4_BASE)
#define TIM5 ((TIM_TypeDef *) TIM5_BASE)
#define TIM6 ((TIM_TypeDef *) TIM6_BASE)
#define TIM7 ((TIM_TypeDef *) TIM7_BASE)
#define TIM12 ((TIM_TypeDef *) TIM12_BASE)
#define TIM13 ((TIM_TypeDef *) TIM13_BASE)
#define TIM14 ((TIM_TypeDef *) TIM14_BASE)
......................
#define TIM1 ((TIM_TypeDef *) TIM1_BASE)
#define SPI1 ((SPI_TypeDef *) SPI1_BASE)
#define TIM8 ((TIM_TypeDef *) TIM8_BASE)
#define USART1 ((USART_TypeDef *) USART1_BASE)
#define ADC3 ((ADC_TypeDef *) ADC3_BASE)
#define TIM15 ((TIM_TypeDef *) TIM15_BASE)
#define TIM16 ((TIM_TypeDef *) TIM16_BASE)
#define TIM17 ((TIM_TypeDef *) TIM17_BASE)
#define TIM9 ((TIM_TypeDef *) TIM9_BASE)
#define TIM10 ((TIM_TypeDef *) TIM10_BASE)
#define TIM11 ((TIM_TypeDef *) TIM11_BASE)
|
|