2019-07-14 16:24发布
pailisi 发表于 2018-11-1 07:28 使用324cG-EVAL的例程重新写了代码,终于看到32位的数据跳变了,问题解决,谢谢大师们支持啊
pmet 发表于 2018-11-1 09:34 库里面是这样的 void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter) {
最多设置5个标签!
楼主你好,我现在也遇到这个问题了,用JTAG调试的时候发现TIM2的CNT寄存器确实是32位的,有CNT_H和CNT_L之分,但是CNT_H总是0,只有CNT_L在变化。
楼主能把你的配置代码贴出来给我参考一下吗?多谢了!!
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;
}
对于不同的定时器,库自己可以区分的,直接调库就可以了,不用纠结
我发现TIM2~TIM5的32位计数器真是一个摆设。
你的那个库函数,其实就是给TIM2_CNT寄存器赋值,我试过了,除非给TIM_CNT的高16位赋值,否则,计数器的高16位永远不会有值。赋值之后,计数器会从赋给的值的基础上往上加,直到溢出变为0x0000 0000。而且当高16位从0xFFFF溢出之后,高16位就永远变为0x0,再也不会有值,只是低16位会不断计数。真是好笑。
用JTAG调试看寄存器的值的。如下图所示:
图1、赋值后,计数器从计数的值基础上往上加:
2、溢出之后,高16位永远为0,只有低16位在不断计数:
3、测试代码
一周热门 更多>