@枭白 2023-06-13 09:44 采纳率: 33.3%
浏览 17

stm32定时器读数出错

使用stm32f103vet6的定时器3,配置为编码器四倍频模式,读取计数寄存器TIx_CNT的值的时候,如果计数值超过0x80则计数值变成0x3F3F。如果配置自动重装载寄存器的值为0x80,则程序正常运行。板子使用的是新买的野火指南者,换板子测也是一样的结果。

  • 写回答

2条回答 默认 最新

  • JiaYu嵌入式 嵌入式领域优质创作者 2023-06-13 11:53
    关注

    根据您提供的描述,您在使用STM32F103系列的定时器3(TIM3)配置编码器四倍频模式时遇到了问题。当读取计数寄存器(TIx_CNT)的值时,如果计数值超过0x80(128),计数值会变成0x3F3F。
    这个问题可能与编码器的计数范围和溢出有关。在四倍频模式下,TIM3的计数范围为0-0xFFFF(16位计数器)。当计数值超过0xFFFF时,它会溢出并重新从0开始。
    根据您的描述,当计数值超过0x80时,计数值变成0x3F3F,这可能是由于读取计数寄存器时发生了溢出,并且计数值在溢出后重新开始计数。
    为了解决这个问题,您可以尝试以下方法:
    1.确保您的编码器连接正确,并且输出信号符合编码器输入的要求。
    2.检查您的代码,确保正确配置了TIM3的编码器模式和计数范围。
    3.检查是否有其他地方对计数寄存器进行了修改或重置。
    4.尝试使用其他计数值进行测试,例如更高或更低的值,以确定是否存在特定的计数范围问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月13日

悬赏问题

  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 游戏盾如何溯源服务器真实ip?
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL