EDN首页   博客首页 用户登陆  |  注册

日志档案

发表于 2008/8/12 19:19:36

标签: STM32F  中文  汉化  固件库  TIM  

汉化STM32F2.02版固件库之二十(TIM)

/*******************************************************************************
* 函数名称: TIM_DeInit
* 功能描述: 重置TIMx外设寄存器为其默认复位值.
* 输入参数: TIMx:此处x可以是1到8以选择外设.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_DeInit(TIM_TypeDef* TIMx)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
 
  switch (*(u32*)&TIMx)
  {
    case TIM1_BASE:
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, ENABLE);
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE); 
      break;
     
    case TIM2_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE);
      break;
 
    case TIM3_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE);
      break;
 
    case TIM4_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, DISABLE);
      break;
     
    case TIM5_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, DISABLE);
      break;
     
    case TIM6_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, DISABLE);
      break;
     
    case TIM7_BASE:
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, DISABLE);
      break;
     
    case TIM8_BASE:
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, ENABLE);
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, DISABLE); 
      break;
     
    default:
      break;
  }
}

/*******************************************************************************
* 函数名称: TIM_TimeBaseInit
* 功能描述: 根据TIM_TimeBaseInitStruct中的特定参数初始化某个TIM的时间基单元.
* 输入参数: (1)TIMx:此处x可以是1,2,3,4,5或8以选择外设.
*           (2)TIM_BaseInitStruct:指向一个包含TIM时间基配置信息的TIM_BaseInitTypeDef结构的指针..
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_TIM_123458_PERIPH(TIMx));
  assert_param(IS_TIM_COUNTER_MODE(TIM_TimeBaseInitStruct->TIM_CounterMode));
  assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct->TIM_ClockDivision));

  /* Select the Counter Mode and set the clock division [选择计数模式和设置时钟分频]*/
  TIMx->CR1 &= CR1_CKD_Mask & CR1_CounterMode_Mask;
  TIMx->CR1 |= (u32)TIM_TimeBaseInitStruct->TIM_ClockDivision |
                TIM_TimeBaseInitStruct->TIM_CounterMode;
  /* Set the Autoreload value [设置自动装载值]*/
  TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ;

  /* Set the Prescaler value [设置预分频器值]*/
  TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler;

  /* Generate an update event to reload the Prescaler value immediatly [产生一个更新事件立即重新装载预分频器值]*/
  TIMx->EGR = TIM_PSCReloadMode_Immediate;
   
  if (((*(u32*)&TIMx) == TIM1_BASE) || ((*(u32*)&TIMx) == TIM8_BASE)) 
  {
    /* Set the Repetition Counter value [设置重复计数器值]*/
    TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter;
  }       
}

完整的stm32f10x_tim.c点击下载,这是所有库文件里面最长的一个了,我歇了好几气才弄完的,请您在下载的同时到左上角顶我一下,以示支持!谢谢

系统分类: 单片机   |   用户分类: STM32F   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

25

阅读(2011)  |  评论(2)  |  收藏(5)  |  举报  

投一票您将和博主都有获奖机会!

最新评论

  • tylazio

    2009/6/15 11:26:22

    好东西,谢谢分享

  • edncareer5

    2008/9/20 12:10:23

    正学这个东东,感觉有点难。