请问:stm单片机定时器可以在程序运行中重复初始化吗

2019-07-21 03:45发布

比如我现在定时器1设置为外部时钟模式触发引脚是CH1,然后我想再某个时刻改变触发引脚为CH2.这样重新配置定时器可以吗?谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 09:41
当然是可以的
吃葡萄吐葡萄皮
2楼-- · 2019-07-21 13:20
本帖最后由 吃葡萄吐葡萄皮 于 2019-3-30 10:08 编辑
正点原子 发表于 2019-3-29 23:02
当然是可以的

感谢原子哥回复,是这样的我用的是STM8S105单片机根据数据手册上说只有TIM1可以设置为外部计数模式,在实际程序中初始化CH1触发计数或者CH2触发计数都可以实现,但是比如说我刚开始初始化CH1进行外部计数,然后再程序中过段时间后初始化为CH2进行外部计数,这时候就不行了,就算再切换到CH1计数也不行了,难道是我的初始化方式有问题吗?一下是我的初始化函数,单独初始化都可以工作(引脚初始化已再别的函数中完成)。
void TIM1_CH1_Init()
{
  /*定时器配置*/
  TIM1_CR1=0;//开启计数器
  TIM1_ARRH=0xFF;
  TIM1_ARRL=0xFF;
  TIM1_PSCRH=0;
  TIM1_PSCRL=0;
  TIM1_CCMR1|=0xF1;//设置滤波CC1通道被配置为输入, IC1映射在TI1FP1上;
  TIM1_CCER1|=0x02;//捕捉发生在TI1F的低电平或下降沿
  TIM1_SMCR|=0x57;//101:滤波后的定时器输入1(TI1FP1)  

  TIM1_CR1=1;//开启计数
}
void TIM1_CH2_Init()//PD4外部时钟模式
{
  /*定时器配置*/
  TIM1_CR1=0;//开启计数器
  TIM1_ARRH=0xFF;
  TIM1_ARRL=0xFF;
  TIM1_PSCRH=0;
  TIM1_PSCRL=0;
  TIM1_CCMR2|=0xF1;//设置滤波CC2通道被配置为输入, IC2映射在TI2FP2上;
  TIM1_CCER1|=0x20;//捕捉发生在TI1F的低电平或下降沿
  TIM1_SMCR|=0x67;//101:滤波后的定时器输入2(TI2FP2)
  TIM1_CR1=1;//开启计数器
}
拜谢!!!!!




吃葡萄吐葡萄皮
3楼-- · 2019-07-21 17:16
问题找到了,再配置新的CH2时候,把CH1寄存器清空。以前用stm32都是库函数,没注意到这些。

一周热门 更多>