OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3208|回复: 3

为什么STM32F10X_FirmWare_V3.5支持17个timer?

[复制链接]

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-9-25
在线时间
4 小时
发表于 2015-10-3 13:49:56 | 显示全部楼层 |阅读模式
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)


最佳答案

查看完整内容[请看2#楼]

为了兼容后续型号吧. 这种叫做未雨绸缪....
供大家参考,希望和同行交流经验
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-3 13:49:57 | 显示全部楼层
为了兼容后续型号吧.
这种叫做未雨绸缪....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-10-3 17:14:39 | 显示全部楼层
只看看,不说话
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-9-25
在线时间
4 小时
 楼主| 发表于 2015-11-12 02:10:54 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
恩,就是的,
虽说是STM32F10X_firmware_v3.5,但是TIM方面就是向后兼容到了STM32F4XX系列
看STM32的选型手册就能知道:STM32F4XX最多支持17个timer,但是STM32F103Z***只支持8个timer
供大家参考,希望和同行交流经验
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 02:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表