云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Stm8s 定时器TIM1的编码模式 与旋转开关的接口 - 图文

Stm8s 定时器TIM1的编码模式 与旋转开关的接口 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 4:25:45

Stm8s 定时器TIM1的编码模式 与旋转开关的接口

Stm8s只有定时器一有编码模式,硬件根据两个通道CH1 和CH2进来相位的关系,计数器自动加减。不需要再通过外部中断来进行旋转编码。一共有三种工作模式。

1.计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的 SMS=001;

2.只在TI1边沿计数,则置SMS=010;

3.计数器同时在TI1和TI2边沿计数,则置SMS=011。 代码

CLK->PCKENR1 |=0X80; //开启time1时钟

TIM1->SMCR |= 0X02; //工作在编码器模式2

TIM1->CCMR1 |= 0X1; //IC1FP1映射到TI1)

TIM1->CCMR2 |= 0X1; //IC2FP2映射到TI2 CC2 MAP TI2FP2 CH2

TIM1->ARRH = 0XEA; // 60000产生溢出 最大65535

TIM1->ARRL = 0X60;

TIM1->IER |=0X1; //开中断 ,开中断前要有中断处理程序,中断

里需要清除中断标志位

TIM1->CNTRH = 0xea; / /我要有个大的初始化值 TIM1->CNTRL=0x56;

TIM1->CR1 =0X01; //启动计数

中断处理程序 #pragma vector=0x0d

__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void) {

TIM1_ClearITPendingBit(TIM1_IT_UPDATE); if((TIM1->CR1&0x10)!=0) count2--; else count2++; }

当计数寄存器(TIM1_CNTR)里的计数值到由TIM1->ARR到0时,开中断的话,会产生溢出中断,根据读TIM1->CR1里的DIR位可以读出方向, DIR位等于1向下计数,DIR等于0向上计数(此时的DIR只读)

普通旋转编码开关的的波形。实际测试结果如下:

与网上所介绍的有所不同,根据旋转方向的不同,两个波形有相位差(超前或滞后)同一时刻对应的两个波形的脉宽相同,不同的是占空比。

实际操作中

1 TIM1->SMCR |= 0X01

顺时针旋转 不稳定 有时+2 逆时针 稳定-2 2 TIM1->SMCR |= 0X02 顺时针 +1逆时针-1 稳定 3 TIM1->SMCR |= 0X03 顺时针+1 逆时针-3

选用第二种模式比较稳定,与旋转开关的输出波形有关。按理说模式一和模式2应该效果一样但是实际不同。

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Stm8s 定时器TIM1的编码模式 与旋转开关的接口 Stm8s只有定时器一有编码模式,硬件根据两个通道CH1 和CH2进来相位的关系,计数器自动加减。不需要再通过外部中断来进行旋转编码。一共有三种工作模式。 1.计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的 SMS=001; 2.只在TI1边沿计数,则置SMS=010; 3.计数器同时在TI1和TI2边沿计数,则置SMS=011。 代码 CLK->PCKENR1 |=0X80; //开启time1时钟 TIM1->SMCR |= 0X02; //工作在编码器模式2 TIM1->CCMR1 |= 0X1; //IC1FP1映射到TI1) TIM1->CCMR2

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com