OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2946|回复: 1

STM32F4 编码器计数不能超过100这是为什么

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2018-4-4
在线时间
5 小时
发表于 2020-4-18 14:57:06 | 显示全部楼层 |阅读模式
1金钱
各位高手指点指点!

编码器最大计数值只能到100,超过100就清零,这是为什么,TIM4 计数器不是16位的吗?

void Encoder_Init(void)
{
GPIO_InitTypeDef GPIO_InitTypeDef_Struct;
TIM_ICInitTypeDef TIM_ICInitTypeDef_Struct;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitTypeDef_Struct;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);   //ÊÇÄÜTIM4 ʱÖÓÔ´
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);   //ʹÄÜGPIOB ʱÖÓ

GPIO_InitTypeDef_Struct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitTypeDef_Struct.GPIO_Pin |= GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitTypeDef_Struct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitTypeDef_Struct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOB,&GPIO_InitTypeDef_Struct);

GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_TIM4); //°&NtildeB6:7 Ó³Éäµ½¸´Óù¦ÄÜTIM4
GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_TIM4); //°&NtildeB6:7 Ó³Éäµ½¸´Óù¦ÄÜTIM4

TIM_TimeBaseStructInit(&TIM_TimeBaseInitTypeDef_Struct);
TIM_TimeBaseInitTypeDef_Struct.TIM_CounterMode = TIM_CounterMode_Up;  //³õʼ»¯TIM4 ΪÏòÉϼÆÊýģʽ,¸ù¾ÝDIRλȷ¶¨µÝÔö»òµÝ¼õ¼ÆÊý
TIM_TimeBaseInitTypeDef_Struct.TIM_ClockDivision = TIM_CKD_DIV1;    //TDTS = TCK_INT
TIM_TimeBaseInitTypeDef_Struct.TIM_Period = 60000;           //TIMx->ARR = 0   Ô¤×°ÔØÖµ
TIM_TimeBaseInitTypeDef_Struct.TIM_Prescaler = 0;            //TIMx->SC = Psc Ô¤·ÖƵÆ÷
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitTypeDef_Struct);
/**
* ÉèÖÃTIM4,±àÂëÆ÷Ä£3;  SMS = 0x011;
* TI1/TI2 ÉÏÉýÑØÓÐЧ
**/
TIM_EncoderInterfaceConfig(TIM4,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);

TIM_ICStructInit(&TIM_ICInitTypeDef_Struct);
TIM_ICInitTypeDef_Struct.TIM_ICFilter = 10;
TIM_ICInit(TIM4, &TIM_ICInitTypeDef_Struct);
TIM_SetCounter(TIM4,0);  //Çå³ýTIM¼ÆÊýÆ÷

TIM_Cmd(TIM4,ENABLE);    //ÊÇÄÜTIM4 ¶¨Ê±Æ÷
}
u16 Read_Encoder_Count(void)
{
return (u16)TIM_GetCounter(TIM4);  //»ñÈ¡¼ÆËãÆ÷Öµ TIMx->CNT
printf("Encoder_Count %d\n",TIM4->CNT);
}

最佳答案

查看完整内容[请看2#楼]

问题已经解决,由于TIM4在别的地方配置为其他模式,定时器重复定义了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2018-4-4
在线时间
5 小时
 楼主| 发表于 2020-4-18 14:57:07 | 显示全部楼层
问题已经解决,由于TIM4在别的地方配置为其他模式,定时器重复定义了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-2 07:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表