码迷,mamicode.com
首页 > 其他好文 > 详细

STM8S TIM1库函数应用

时间:2014-05-18 13:27:43      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:blog   class   code   c   int   a   

个人觉得ST的库函数用起来还是挺不错的,之前都是使用自己写的函数,容易改出错,以下是验证过的,TIM1定时100微妙中断一次。

void TIM1_TimeBaseInit(u16 TIM1_Prescaler,
                       TIM1_CounterMode_TypeDef TIM1_CounterMode,
                       u16 TIM1_Period,
                       u8 TIM1_RepetitionCounter)
{

    /* Check parameters */
    assert_param(IS_TIM1_COUNTER_MODE_OK(TIM1_CounterMode));

    /* Set the Autoreload value */
    TIM1->ARRH = (u8)(TIM1_Period >> 8);
    TIM1->ARRL = (u8)(TIM1_Period);

    /* Set the Prescaler value */
    TIM1->PSCRH = (u8)(TIM1_Prescaler >> 8);
    TIM1->PSCRL = (u8)(TIM1_Prescaler);

    /* Select the Counter Mode */
    TIM1->CR1 = (u8)(((TIM1->CR1) & (u8)(~(TIM1_CR1_CMS | TIM1_CR1_DIR))) | (u8)(TIM1_CounterMode));

    /* Set the Repetition Counter value */
    TIM1->RCR = TIM1_RepetitionCounter;

}

void TIM1_Cmd(FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_FUNCTIONALSTATE_OK(NewState));

    /* set or Reset the CEN Bit */
    if (NewState != DISABLE)
    {
        TIM1->CR1 |= TIM1_CR1_CEN;
    }
    else
    {
        TIM1->CR1 &= (u8)(~TIM1_CR1_CEN);
    }
}

void TIM1_ITConfig(TIM1_IT_TypeDef  TIM1_IT, FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_TIM1_IT_OK(TIM1_IT));
    assert_param(IS_FUNCTIONALSTATE_OK(NewState));

    if (NewState != DISABLE)
    {
        /* Enable the Interrupt sources */
        TIM1->IER |= (u8)TIM1_IT;
    }
    else
    {
        /* Disable the Interrupt sources */
        TIM1->IER &= (u8)(~(u8)TIM1_IT);
    }
}

void TIM1_TimerInit(u16 Timer1Time) 
{
  assert_param(IS_TIM1TIMERTIME_OK(Timer1Time));
   
  TIM1_DeInit();//复位TIM1所有参数
  TIM1_TimeBaseInit(TIM1_PRESCALER_16,TIM1_COUNTERMODE_DOWN,Timer1Time,0);
  //TIM1的预分频器基于一个由16位寄存器
  //选择16分频 16M/16=1M  周期为1us 
  TIM1_Cmd(ENABLE);//使能计时器
  TIM1_ITConfig(TIM1_IT_UPDATE,ENABLE);//使能TIM1中断
}
初始化时,调用
TIM1_TimerInit(100);//定时中断100微妙一次


STM8S TIM1库函数应用,布布扣,bubuko.com

STM8S TIM1库函数应用

标签:blog   class   code   c   int   a   

原文地址:http://blog.csdn.net/chuangwu2009/article/details/25977207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!