STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
我发现TIM2~TIM5的32位计数器真是一个摆设。
你的那个库函数,其实就是给TIM2_CNT寄存器赋值,我试过了,除非给TIM_CNT的高16位赋值,否则,计数器的高16位永远不会有值。赋值之后,计数器会从赋给的值的基础上往上加,直到溢出变为0x0000 0000。而且当高16位从0xFFFF溢出之后,高16位就永远变为0x0,再也不会有值,只是低16位会不断计数。真是好笑。
用JTAG调试看寄存器的值的。如下图所示:
图1、赋值后,计数器从计数的值基础上往上加:
2、溢出之后,高16位永远为0,只有低16位在不断计数:
3、测试代码
void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter)
{
/* Check the parameters */
assert_param(IS_TIM_ALL_PERIPH(TIMx));
/* Set the Counter Register value */
TIMx->CNT = Counter;
}
对于不同的定时器,库自己可以区分的,直接调库就可以了,不用纠结
楼主你好,我现在也遇到这个问题了,用JTAG调试的时候发现TIM2的CNT寄存器确实是32位的,有CNT_H和CNT_L之分,但是CNT_H总是0,只有CNT_L在变化。
楼主能把你的配置代码贴出来给我参考一下吗?多谢了!!
RE:STM32F4直接使用32位定时器(tim2)计数问题
回复:STM32F4直接使用32位定时器(tim2)计数问题
手册中描述了CNT就是16位的寄存器。
手册28,29页有说明 是32位的计数器啊
TIM2, TIM3, TIM4, TIM5
The STM32F40x include 4 full-featured general-purpose timers: TIM2, TIM5, TIM3, and
TIM4.The TIM2 and TIM5 timers are based on a 32-bit auto-reload up/downcounter
and a 16-bit prescaler.
RE:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
回复:STM32F4直接使用32位定时器(tim2)计数问题
回复:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
回复:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
RE:STM32F4直接使用32位定时器(tim2)计数问题
估计楼主是在读取的时候,定时器读出来的数据被软截断了。导致看到的是低16位的数据