分享STM8S TIM1_CH1捕获及 Option Byte设置

2019-07-19 21:23发布

本帖最后由 方圆 于 2016-3-11 22:16 编辑

      入门STM8,不可避免的遇到了映射问题,这不,折腾了一天时间,终于把TIM1_CH1的捕获调通了。
      第一点要关注的是,【TIM1_CH1】是复用功能,需要映射后才能正常使用。附件里有相关文档可以查看,也包括其他外设映射所对应的option byte.
      第二点是触发输入信号、触发方式的设置,可以通过寄存器直接设置,但是我更喜欢用库函数设置。     
寄存器版:
     //TIM1->SMCR  |= 0x54;//配置TIM1_SMCR寄存器的SMS=100,选择定时器为复位触发模式;
                                      //配置TIM1_SMCR寄存器的TS=101 ,选择TI1 作为输入源。

库函数版:
      // 选择有效的触发输入信号:选源触发源 ti1fp1
      TIM1_SelectInputTrigger(TIM1_TS_TI1FP1);
      //  触发方式:复位模式
      TIM1_SelectSlaveMode(TIM1_SLAVEMODE_RESET);
完整初始化函数:
void TIM1_Config(void)
{
    //设置为缺省值
    TIM1_DeInit();
    // 1分频,TIM1时钟为16M
    TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 3999, 0);
    // CC1通道被配置为输入,IC1映射在TI1FP1上
    // 使能输入捕获,TI1FP1上升沿触发
    TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 0x00);
    // 选择有效的触发输入信号:选源触发源 ti1fp1
    TIM1_SelectInputTrigger(TIM1_TS_TI1FP1);
    //  触发方式:复位模式
    TIM1_SelectSlaveMode(TIM1_SLAVEMODE_RESET);
    //TIM1->SMCR  |= 0x54;//配置TIM1_SMCR寄存器的SMS=100,选择定时器为复位触发模式;
                         //配置TIM1_SMCR寄存器的TS=101 ,选择TI1 作为输入源。
    // 使能更新ch1中断
    TIM1_ITConfig(TIM1_IT_CC1, ENABLE);
    // 自动重装载使能
    TIM1_ARRPreloadConfig(ENABLE);
    TIM1_Cmd(ENABLE);
}

0条回答

一周热门 更多>