OpenEdv-开源电子网

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

有没有做平衡小车 遇到编码程序与控制程序冲突的

[复制链接]

12

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-5-30
在线时间
121 小时
发表于 2018-6-28 23:20:34 | 显示全部楼层 |阅读模式
1金钱
求解  屏蔽了编码程序  直立控制就能用     不屏蔽控制直接凉了 不起作用

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-5-30
在线时间
121 小时
 楼主| 发表于 2018-6-28 23:27:23 | 显示全部楼层
按着平衡小车之家 精简版的程序 写的 对比着好久 还是找不出问题在吗
回复

使用道具 举报

12

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-5-30
在线时间
121 小时
 楼主| 发表于 2018-6-29 00:07:19 | 显示全部楼层
#include "encoder.h"
#include "usart.h"

///**************************************************************************
//º¯Êý¹¦ÄÜ£ºTIM3ÖжϷþÎñº¯Êý
//Èë¿Ú²ÎÊý£ºÎÞ
//·µ»Ø  Öµ£ºÎÞ
//**************************************************************************/
void TIM3_IRQHandler(void)
{                  
if(TIM3->SR&0X0001)//Òç³öÖжÏ
{                           
}      
TIM3->SR&=~(1<<0);//&Ccedil;&aring;&sup3;&yacute;&Ouml;&ETH;&para;&Iuml;±ê&Ouml;&frac34;&Icirc;&raquo;      
}
/*****************************************************************************/
void Encoder_L_Init_TIM3(void)//×ó±&szlig;±à&Acirc;&euml;&AElig;÷&micro;&Auml;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
TIM_ICInitTypeDef TIM_ICInitStructure;  
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);   //TIM12&Ecirc;±&Ouml;&Oacute;&Ecirc;&sup1;&Auml;&Uuml;   
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);  //&Ecirc;&sup1;&Auml;&UumlORTB&Ecirc;±&Ouml;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);  

GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_TIM3);   
  GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_TIM3);   

TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
     
TIM_TimeBaseStructure.TIM_Prescaler = 0x0;      
  TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  

TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
  TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = 0;
  TIM_ICInit(TIM3, &TIM_ICInitStructure);

TIM_ClearFlag(TIM3, TIM_FLAG_Update);
  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  TIM_Cmd(TIM3, ENABLE);
}
/****************************************************************************************/
void Encoder_R_Init_TIM4(void)//&Oacute;&Ograve;±&szlig;±à&Acirc;&euml;&AElig;÷&micro;&Auml;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
TIM_ICInitTypeDef TIM_ICInitStructure;  
GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);   //TIM12&Ecirc;±&Ouml;&Oacute;&Ecirc;&sup1;&Auml;&Uuml;   
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);  //&Ecirc;&sup1;&Auml;&UumlORTB&Ecirc;±&Ouml;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);  
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4);   
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource13,GPIO_AF_TIM4);   
  
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;        
  TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  
  
  TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
  TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = 0;
  TIM_ICInit(TIM4, &TIM_ICInitStructure);
  
  TIM_ClearFlag(TIM4, TIM_FLAG_Update);
  TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
  TIM_Cmd(TIM4, ENABLE);
}

/**********************************************************************************/
int Read_Encoder(u8 TIMX)//&para;&Aacute;&Egrave;&iexcl;±à&Acirc;&euml;&AElig;÷&frac14;&AElig;&Ecirc;&yacute;
{
  int Encoder_TIM;   
  switch(TIMX)
  {
  case 2:  Encoder_TIM= (short)TIM2 -> CNT;  TIM2 -> CNT=0;break;
  case 3:  Encoder_TIM= (short)TIM3 -> CNT;  TIM3 -> CNT=0;break;
  case 4:  Encoder_TIM= (short)TIM4 -> CNT;  TIM4 -> CNT=0;break;
  default:  Encoder_TIM=0;
  }
  return Encoder_TIM;
}


到底死在哪条程序上。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-29 01:54:11 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-29 11:44:43 | 显示全部楼层
两个程序里面都用了定时器3和定时器4
回复

使用道具 举报

12

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-5-30
在线时间
121 小时
 楼主| 发表于 2018-6-29 13:31:40 | 显示全部楼层
本帖最后由 Z一叶孤舟 于 2018-6-29 13:35 编辑
HXYDJ 发表于 2018-6-29 11:44
两个程序里面都用了定时器3和定时器4

怎么看有没有共用,我现在用12  14 PWM输出  定时器2 3编码 还是不行 用的F4的版
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 11:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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