搜索
bottom↓
回复: 53

stm32配置成编码器模式,我不知道我的配置正确么?但是测试就是不对,我想请大牛看看,麻烦

[复制链接]

出0入0汤圆

发表于 2011-9-17 11:39:46 | 显示全部楼层 |阅读模式
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : stm32f10x_encoder.c
* Author             : IMS Systems Lab  
* Date First Issued  : 21/11/07
* Description        : This file contains the software implementation for the
*                      encoder unit
********************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stm32f10x_encoder.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define ENCODER_TIMER   TIM3  // Encoder unit connected to TIM3         使用那个定时器去驱动编码器
#define ENCODER_PPR           (u16)(500)   // number of pulses per revolution  编码器自身的特性
#define ENCODER_TIM_PERIOD 2000           // 设定读取pwm的周期
#define MAX_COUNT 2300                          //最大的记数
#define SPEED_SAMPLING_TIME 4000

#define COUNTER_RESET   (u16)0
#define ICx_FILTER      (u8) 6 // 6<-> 670nsec
//定义中断级别
#define TIMx_PRE_EMPTION_PRIORITY 1
#define TIMx_SUB_PRIORITY 0

#define SPEED_SAMPLING_FREQ ((u16)(2000/(SPEED_SAMPLING_TIME+1)))         //        占空比


/* Private functions ---------------------------------------------------------*/
volatile        u32         CurrentCount  ;
/* Private variables ---------------------------------------------------------*/



/*******************************************************************************
* Function Name  : ENC_Init
* Description    : General Purpose Timer x set-up for encoder speed/position
*                  sensors 正交编码器接口的初始化,Timer3驱动编码器
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void ENC_Init(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_ICInitTypeDef TIM_ICInitStructure;
  
/* Encoder unit connected to TIM3, 4X mode */   
  GPIO_InitTypeDef GPIO_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* TIM3 clock source enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  /* Enable GPIOA, clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  
  GPIO_StructInit(&GPIO_InitStructure);
  /* Configure PA.06,07 as encoder input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Enable the TIM3 Update Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMx_PRE_EMPTION_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMx_SUB_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* Timer configuration in Encoder mode */
  TIM_DeInit(ENCODER_TIMER);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;  // No prescaling
  TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD;  
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
  TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);

//TIM_EncoderMode:触发源 TIM_ IC1Polarity:TI1 极性  TIM_ IC2Polarity:TI2 极性
  TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); //TIMx:x 可以是 2,3 或者 4,来选择 TIM 外设
  TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = ICx_FILTER;  //设定滤波值
  TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure);
  
// Clear all pending interrupts
  TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
  TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE);
  //Reset counter
  TIM3->CNT = COUNTER_RESET;
  
//  ENC_Clear_Speed_Buffer();
  
  TIM_Cmd(ENCODER_TIMER, ENABLE);  
  
}

/*******************************************************************************
* Function Name  : ENC_Get_Electrical_Angle
* Description    : Returns the absolute electrical Rotor angle 计算马达转子的位置电角度
* Input          : None
* Output         : None
* Return         : Rotor electrical angle: 0 -> 0 degrees,
*                                          S16_MAX-> 180 degrees,
*                                          S16_MIN-> -180 degrees                  
*******************************************************************************/
s16 ENC_Get_Electrical_Angle(void)
{
static  u16   lastCount = 0;
  u16  curCount        ;
  s32 dAngle;
curCount = ENCODER_TIMER->CNT;
  dAngle = curCount - lastCount;
  if(dAngle >= MAX_COUNT)
  {
    dAngle -= ENCODER_TIM_PERIOD;
  }else if(dAngle < -MAX_COUNT){
    dAngle += ENCODER_TIM_PERIOD;
  }
  lastCount = curCount;
  return (s16)dAngle;  

}

这里我在系统中断里面读取 这个值 但是就是 0 1

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-9-17 11:41:46 | 显示全部楼层
自习希望这个帖可以顶上去,希望大家以后都可以用上这个,我觉得有了这个控制电机的位置很方便。 希望大家顶

出0入0汤圆

 楼主| 发表于 2011-9-17 11:49:20 | 显示全部楼层
再顶一下,麻烦大虾看看啊

出0入0汤圆

 楼主| 发表于 2011-9-17 12:50:38 | 显示全部楼层
还是没有人来啊,我会不停的更新的,怎么每次的帖子都没有人来看看 , 那位踩一脚 小弟不胜感激~~~~~~~~~~~~~~

出0入0汤圆

 楼主| 发表于 2011-9-17 16:41:48 | 显示全部楼层
还是没有人回复,不太好吧 那位哥们顶一下啊

出0入0汤圆

发表于 2011-9-17 17:09:32 | 显示全部楼层
帮踩

出0入0汤圆

 楼主| 发表于 2011-9-17 21:18:23 | 显示全部楼层
回复【5楼】skyshine
-----------------------------------------------------------------------

谢谢你了,~~ 感谢你了,不知道还有那位哥们顶一下没?
哥们留个联系方式,我太感谢你了

出0入0汤圆

发表于 2011-9-17 21:23:13 | 显示全部楼层
void ENC_Init(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_ICInitTypeDef TIM_ICInitStructure;
  
/* Encoder unit connected to TIM4, 4X mode */   
  GPIO_InitTypeDef GPIO_InitStructure;
  
  /* TIM4 clock source enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  /* Enable GPIOB, clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  
  GPIO_StructInit(&GPIO_InitStructure);
  /* Configure PB.6,7 as encoder input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Enable the TIM4 Update Interrupt */
  /*
  NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMx_PRE_EMPTION_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMx_SUB_PRIORITY;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
        */
       
  /* Timer configuration in Encoder mode */
  TIM_DeInit(ENCODER_TIMER);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;  // No prescaling
  TIM_TimeBaseStructure.TIM_Period = (4*ENCODER_PPR)-1;  
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
  TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);

  TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
  TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = ICx_FILTER;
  TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure);
  
        // Clear all pending interrupts
  TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
  TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE);
  //Reset counter
  TIM3->CNT = COUNTER_RESET;
  

  TIM_Cmd(ENCODER_TIMER, ENABLE);  
}

正交编码配置

出0入0汤圆

发表于 2011-9-17 21:27:24 | 显示全部楼层
支持楼主

出0入0汤圆

 楼主| 发表于 2011-9-17 21:43:27 | 显示全部楼层
谢谢大哥了,感谢神啊,我的神啊 第一次 有这么人回我的贴啊,我一定要把这个电机调试出来,调试出来了,我会把源码发出来

出0入0汤圆

 楼主| 发表于 2011-9-17 21:48:33 | 显示全部楼层
回复【7楼】888888888888
-----------------------------------------------------------------------

想问下这个大哥,这个代码测试了吗?我自己的那个代码测试了 好像打印的有问题,我没有接到电机的编码器,因为电机很难拆下来,  感觉你这个和我的一样的
我的代码里面还有的部分看不懂 我这个帖出来,也和大家分享一下
extern volatile        u32         CurrentCount;
extern volatile u8 flag        ;
volatile        u32         CurrentCount1,CurrentCount2;
void SysTick_Handler(void)
{
  if(flag == 0){
          CurrentCount = ENC_Get_Electrical_Angle();
          CurrentCount1 =  CurrentCount;
          flag = 1;
  }
  else if(flag == 1){
          CurrentCount = ENC_Get_Electrical_Angle();
          CurrentCount2 =  CurrentCount;
          flag = 0;
  }

}这个是我那个中断的,我想在10ms读取一次那个记数器里面的,值 但是我在debug的时候 这个CurrentCount1是0 或者fffffffff
想请教一下高手
谢谢了搞了两天了,很郁闷了

出0入0汤圆

 楼主| 发表于 2011-9-17 21:49:30 | 显示全部楼层
回复【10楼】251131250
-----------------------------------------------------------------------

我没有发现你的代码和我有什么不一样啊

出0入0汤圆

 楼主| 发表于 2011-9-17 21:56:03 | 显示全部楼层
自己把这个帖顶起来,因为我觉得这个32控制电机真的很好,我想把这次遇到的问题都放到这个帖里面,在接下来我调试出来的问题,我都放到这个上面,如果解决不了的,我也放到上面,让大家一起来看看,这个电机到底是怎么转起来的,现在有点兴奋,现在手上没有板子,很想再去测试一下啊, 不知道有没有兴趣的朋友,一起玩玩,也希望大虾可以给我指点,小弟在这里谢谢了~~·~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

出0入0汤圆

 楼主| 发表于 2011-9-17 21:59:25 | 显示全部楼层
同时我还想告诉大家,说句心里话,这个我是第一分工作,也是老大给我的第一个任务,鸭梨很大啊,我知道他也就随便说说,但是我还是希望做 ,希望大家·········· 谢谢8楼的哥们了

出0入0汤圆

 楼主| 发表于 2011-9-17 22:08:55 | 显示全部楼层
xi休息一下啊~~ 等下看有人来?

出0入0汤圆

发表于 2011-9-17 22:18:57 | 显示全部楼层
我挂过编码电机定位伺服试验过的

出0入0汤圆

 楼主| 发表于 2011-9-17 22:30:38 | 显示全部楼层
888888888888
-----------------------------------------------------------------------


这位大哥可以留个联系方式吗? 我今天下午也测试我的,我用的函数发生器发送的波形两路, 但是还真的有问题回复【15楼】
可以给个工程 我吗?我想去测试一下,你测试过了的

出0入0汤圆

 楼主| 发表于 2011-9-17 22:32:01 | 显示全部楼层
我的QQ 是251131250

出0入0汤圆

 楼主| 发表于 2011-9-17 23:27:23 | 显示全部楼层
ok
睡觉了希望明天好运,呵呵 明天继续学习

出0入0汤圆

 楼主| 发表于 2011-9-18 09:42:17 | 显示全部楼层
早上好 我发的帖

出0入0汤圆

发表于 2011-9-18 10:15:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-18 14:36:21 | 显示全部楼层
mark,后面才会用

出0入0汤圆

 楼主| 发表于 2011-9-18 18:04:39 | 显示全部楼层
哇撒今天 还是没有人给小弟留个资料啊~~ 明天再去调试,就按上面的配置 再去测试一下

出0入0汤圆

 楼主| 发表于 2011-9-18 22:48:38 | 显示全部楼层
今天就到这里,明天再来

出0入0汤圆

发表于 2011-9-18 23:38:22 | 显示全部楼层
如果你使用的ST 的马达库V2.0的话,我可以告诉你没有问题的。我们都经过了大量测试,而且我们也有现成的开发套件以及源代码提供。

出0入0汤圆

 楼主| 发表于 2011-9-19 08:41:54 | 显示全部楼层
0哦。 我用的3.12这个库,贵吗?
你那个

出0入0汤圆

 楼主| 发表于 2011-9-19 11:37:55 | 显示全部楼层
我现在直接用51单片机管脚输入两路PWM啵。那里是5v的哦 还有5v上啦,会不会是硬件问题啊~~~
我把我自己的两个管脚设置成浮空输入 ,但是我一个值也读不出来,读出的tim寄存器值是0

出0入0汤圆

 楼主| 发表于 2011-9-19 17:58:36 | 显示全部楼层
有一点点兴奋 终于出来了一点点东西,不知道为什么这个串口打印的消息的数字这么大,-25172
-25173
-25174
-25175
-25176
-25177
-25178
-25179
-25180
-25181
-25182
-25183
-25184
-25185
-25186
-25187
-25188
-25189
-25190
-25191
-25192
-25193
-25194
-25195
-25196
-25197
-25198
-25199
-25200
-25201
-25202
-25203
-25204
-25205
-25206
每次加1 而且前面有个负号, 之所以出现这个情况是因为PWM啵的输入有问题,一直没有输入, 很悲剧 ,因为没有示波器看波形,哎 还好最后发现了,对朋友的自信, 不考虑他那个部分,最后,哎 总结了, 呵呵  继续调试  
有那位大哥知道为什么打印的数值这么大吗?  是不是初始化的问题 有了更新马上发上来,

出0入0汤圆

发表于 2011-9-20 00:09:16 | 显示全部楼层
看看下面的程序是否可以

static volatile  uint16_t Counter = 100;

/*******************************************************************************
* @brief  Configure TIM3
* @param  None
* @retval : None
*******************************************************************************/
void xEncoderInit()
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

        /* TIM3 clock source enable */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
        /* Enable GPIOA, clock */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

        GPIO_StructInit(&GPIO_InitStructure);
        /* Configure PA.06,07 as encoder input */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        /* Enable the TIM3 Update Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMx_PRE_EMPTION_PRIORITY;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMx_SUB_PRIORITY;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);


        /* ---------------------------------------------------------------------------
        TIM3 Configuration: Encoder Interface Mode:
        ----------------------------------------------------------------------------*/
        /* Timer configuration in Encoder mode */
        TIM_DeInit(TIM3);
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

        TIM_TimeBaseStructure.TIM_Prescaler = 0x0;  // No prescaling
        TIM_TimeBaseStructure.TIM_Period = 1;// (4*ENCODER_PPR)-1;  //Set ARR
        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);

        /* Output Compare Inactive Mode configuration: Channel3 */
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable;
        TIM_OCInitStructure.TIM_Pulse = 0;
        TIM_OC3Init(TIM3, &TIM_OCInitStructure);
        TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable);

        /* Output Compare Toggle Mode configuration: Channel4 */
        TIM_OCInitStructure.TIM_Pulse = 1;
        TIM_OC4Init(TIM3, &TIM_OCInitStructure);
        TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Disable);

        TIM_ICStructInit(&TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_ICFilter = ICx_FILTER;
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
        TIM_ICInit(TIM3, &TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
        TIM_ICInit(TIM3, &TIM_ICInitStructure);


        /* TIM enable counter */
        TIM_Cmd(TIM3, ENABLE);

        /* TIM IT enable */
        TIM_ITConfig(TIM3, TIM_IT_CC3 | TIM_IT_CC4 , ENABLE);
}

        /*******************************************************************************
          * @brief  Describes the action when encoder is turned
          * @param  None
          * @retval : None
        *******************************************************************************/
        void Encoder_Turned(void)
        {
                if ( (GPIO_ReadInputDataBit(TIM3_CH12_PORT, TIM3_CH1_PIN) == 1)  &&
                                (GPIO_ReadInputDataBit(TIM3_CH12_PORT, TIM3_CH2_PIN) == 1))
                {
                  if(TIM3->CR1 & 0b0010000)
                        { // CCW
                          Counter--;
                          write_string("Turned CCW!");
                                  write_string( int2char(Counter));
                                  write_string( "\r\n");

                        }
                  else
                        { // CW
                          Counter++;
                          write_string("Turned CW!");
                          write_string( int2char(Counter));
                          write_string( "\r\n");
                        }
                }
        }


        /*******************************************************************************
          * @brief  This function handles TIM3 capture compare interrupt request.
          * @param  None
          * @retval None
          *******************************************************************************/
        void TIM3_IRQHandler(void)
        {
          if (TIM_GetITStatus(TIM3, TIM_IT_CC3) != RESET)
          {
                /* Clear TIM3 Capture Compare3 interrupt pending bit*/
                TIM_ClearITPendingBit(TIM3, TIM_IT_CC3);
                Encoder_Turned();
          }
          else if (TIM_GetITStatus(TIM3, TIM_IT_CC4) != RESET)
          {
                /* Clear TIM3 Capture Compare4 interrupt pending bit*/
                TIM_ClearITPendingBit(TIM3, TIM_IT_CC4);
                Encoder_Turned();
          }

        }

出0入0汤圆

 楼主| 发表于 2011-9-20 12:04:56 | 显示全部楼层
回复【29楼】skyshine
-----------------------------------------------------------------------
不好意思,我还在外面,还没有回去,还没有测试, 你这个代码我还没有看明白,你这个tim的通道三和通道四  还是不太明白的你配置,可以加点注释吗? 不然我都不知道怎么把这个代码去测试一下

出0入0汤圆

发表于 2011-9-20 12:11:50 | 显示全部楼层
点击此处下载 ourdev_677990XHUZV3.pdf(文件大小:323K) (原文件名:STM32F10xxx正交编码器接口应用笔记.pdf)

出0入0汤圆

发表于 2011-9-20 12:27:11 | 显示全部楼层
顶,LZ我也是刚刚学STM32的 有什么问题能向你请教吗

出0入0汤圆

发表于 2011-9-20 12:46:32 | 显示全部楼层
光看代码太麻烦,用KEIL进软件模拟跑下程序,跑到初始化完你当编码器用的定时器后,把那个定时器窗口打开,手工操作下CH1、CH2口的输入,COUNT数变就说明你配置对了。
我这个配制是TIM2做编码器用正常的,看看你的是不是这样

(原文件名:Image1.png)

出0入0汤圆

 楼主| 发表于 2011-9-20 13:30:04 | 显示全部楼层
好的谢谢了,我下午回去了,马上测试。回复【31楼】888888888888
-----------------------------------------------------------------------

我就是根据这个手册写的这个代码,我回去测试了马上和大家分享,开心啊 今天又有几个人顶了这个帖
那位大哥可以分享一下完整的demo吗?

出0入0汤圆

 楼主| 发表于 2011-9-20 13:51:18 | 显示全部楼层

(原文件名:未命名.jpg)

出0入0汤圆

发表于 2011-9-20 14:25:45 | 显示全部楼层
不错的方案,有时间一定要试一下。

出0入0汤圆

 楼主| 发表于 2011-9-21 19:36:25 | 显示全部楼层
我上面的那个配置是对的,可以用,我测试了 ,然后因为电机的问题,我就不能测试了,我把ad,pwm都准备好了,但是没有电机啊  失落啊,我得先搞下别的外设,也会向大家请教的,在这里谢谢大家了

出130入129汤圆

发表于 2011-9-22 13:46:28 | 显示全部楼层
我是直接编译 ST的那个例子,在STM3210B学习板上接编码器就能正常使用

出0入0汤圆

 楼主| 发表于 2011-9-24 08:02:12 | 显示全部楼层
回复【38楼】68336016
-----------------------------------------------------------------
  你的电路板是什么样子啊? 呵呵 可以给详细的东西ma ? st的例子可以直接编译

出130入129汤圆

发表于 2011-9-25 11:31:02 | 显示全部楼层
回复【40楼】251131250
回复【38楼】68336016  
-----------------------------------------------------------------  
  你的电路板是什么样子啊? 呵呵 可以给详细的东西ma ? st的例子可以直接编译
-----------------------------------------------------------------------

就是万利的 STM3210B-LK1 199那个

出0入0汤圆

 楼主| 发表于 2011-9-29 16:23:37 | 显示全部楼层
测试了可以用啊

出0入0汤圆

发表于 2011-12-9 10:54:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-9 13:05:42 | 显示全部楼层
35楼正确。。
我的一般配置  CCMR1=0x1A1;

出0入0汤圆

 楼主| 发表于 2011-12-16 17:02:02 | 显示全部楼层
嗯,呵呵 各位这个配置是可以使用的,你们可以用我的源代码

出0入0汤圆

发表于 2012-4-13 11:35:32 | 显示全部楼层
(4*ENCODER_PPR)-1;
这句话这里为什么要减一?

出0入0汤圆

发表于 2012-4-17 19:35:35 | 显示全部楼层
正好要用,学习下

出0入0汤圆

发表于 2012-5-27 22:26:34 | 显示全部楼层
请问楼上,能把ST的那个例程传上来吗?

出0入0汤圆

发表于 2012-11-30 20:36:45 | 显示全部楼层
求源工程额。

出0入0汤圆

发表于 2012-12-7 21:18:43 | 显示全部楼层
顶一下。。。。。。。。。。。。。。。。。。。。。。。。。

出0入0汤圆

发表于 2012-12-14 23:04:57 | 显示全部楼层
不错,顶下

出0入0汤圆

发表于 2015-4-8 16:49:43 | 显示全部楼层
最近正在弄这个~很佩服楼主的精神啊!赞!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 03:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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