[STM32F4] TIMX_RCR重载计数初值设置出错

[复制链接]
1031|14
 楼主| 内核558 发表于 2025-3-12 11:00 | 显示全部楼层 |阅读模式
TI, mx, rc, ui, IO
在用(TIMX_RCR)的时候遇到一些问题。当启用OPM设置,在重载计数初值设置中输入一个16位的值时,就出问题了。
我认为将LL_TIM_InitTypeDef结构题中声明的uint8_t RepetitionCounter定义为uint16_t才是是正确的。但是重新定义后回引其更多的错误。

麻花油条 发表于 2025-3-12 11:36 | 显示全部楼层
检查RCR值的范围,在设置RCR值时,输入的值不超过255。
flycamelaaa 发表于 2025-3-12 23:00 | 显示全部楼层
如果发现固件库存在问题,更新到最新版本。
香水城 发表于 2025-3-13 09:13 | 显示全部楼层

你将将LL_TIM_InitTypeDef结构题中声明的uint8_t RepetitionCounter定义为uint16_t也没有用,因为这个寄存器的有效位才8位,高8位是无效的保留位。 赋值超过255就肯定出问题。
1717467d230ee50bf3.png
laocuo1142 发表于 2025-3-13 11:00 | 显示全部楼层
固件库版本与GD32F105RB的硬件不兼容。
暖了夏天蓝了海 发表于 2025-4-11 01:09 | 显示全部楼层
在使用 STM32 定时器的重复计数器(TIMx_RCR) 时,如果遇到 启用单脉冲模式(OPM) 并设置16位重载值的问题,确实可能与LL_TIM_InitTypeDef结构体中 RepetitionCounter 的数据类型定义有关

淡漠安然 发表于 2025-4-11 02:21 | 显示全部楼层
在标准库(如 HAL/LL)中,LL_TIM_InitTypeDef RepetitionCounter 通常定义为 uint8_t8 位),但某些 STM32 定时器(如高级定时器 TIM1/TIM8)的 TIMx_RCR 寄存器实际上是 16 位(如 STM32G4 系列)

江河千里 发表于 2025-4-11 03:11 | 显示全部楼层
当试图写入超过 2550xFF)的值时,由于数据类型截断,实际写入的值会错误

一秒落纱 发表于 2025-4-11 04:14 | 显示全部楼层
OPM 模式(TIM_CR1.OPM=1)下,定时器在 发生 UEV 事件后自动停止

光辉梦境 发表于 2025-4-11 05:28 | 显示全部楼层
RCR 配置错误(如写入不完整的高 8 位),可能导致计数异常或无法触发更新事件

冰春彩落下 发表于 2025-4-11 06:24 | 显示全部楼层
如果必须使用 LL 库,可临时修改 stm32g4xx_ll_tim.h 中的定义(需备份原文件)

夜阑风雨 发表于 2025-4-11 07:33 | 显示全部楼层
修改库文件可能导致其他依赖此结构体的函数出错(如 LL_TIM_Init())。需重新编译整个工程,且升级库时需重复修改

三生万物 发表于 2025-4-11 08:35 | 显示全部楼层
需确认 LL_TIM_SetRepetitionCounter() 是否支持 16 位操作(部分库可能仅处理低 8 位)

远山寻你 发表于 2025-4-11 09:11 | 显示全部楼层
在调试模式下,查看 TIM1->RCR 的值是否与预期一致。若值为 0x34(仅低 8 位生效),则确认库函数存在截断

别乱了阵脚 发表于 2025-4-11 10:42 | 显示全部楼层
优先直接操作 TIMx_RCR 寄存器,避免库函数限制。慎改库文件,除非能确保兼容性。验证 OPM RCR 的协同工作:通过调试器检查寄存器值

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

本版积分规则

51

主题

51

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部