OpenEdv-开源电子网

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

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

[复制链接]

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2019-1-15
在线时间
41 小时
发表于 2019-3-29 23:02:00 | 显示全部楼层 |阅读模式
1金钱
比如我现在定时器1设置为外部时钟模式触发引脚是CH1,然后我想再某个时刻改变触发引脚为CH2.这样重新配置定时器可以吗?谢谢

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-3-29 23:02:01 | 显示全部楼层
回复

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2019-1-15
在线时间
41 小时
 楼主| 发表于 2019-3-30 10:07:06 | 显示全部楼层
本帖最后由 吃葡萄吐葡萄皮 于 2019-3-30 10:08 编辑

感谢原子哥回复,是这样的我用的是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;//开启计数器
}
拜谢!!!!!




回复

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2019-1-15
在线时间
41 小时
 楼主| 发表于 2019-3-30 11:39:49 | 显示全部楼层
问题找到了,再配置新的CH2时候,把CH1寄存器清空。以前用stm32都是库函数,没注意到这些。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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