初学stm32外部计数模式,请指教

[复制链接]
 楼主| jjg809898461 发表于 2013-11-26 14:10 | 显示全部楼层 |阅读模式
最近两天在做外部计数,用的芯片stm32f107,希望采集100K~500K频率,之前没做过,网上好多例子只有部分代码没有说明,很郁闷。话不多说,这个程序总是不能出来数据。使用PA.0引脚来采集,用串口2,PA02 PA03输出信息,不知道哪里错了,希望大神能指正,最好能详细点,感激不尽
int main(void)
{
u16 i_Loop;
int n=0;

       
  RCC_Configuration();  // System Clocks Configuration

        NVIC_Configuration();  // NVIC configuration

        GPIO_Configuration();  // Configure the GPIO ports

        USART1_Config();
       
        Tim2_config();

while (1)
         {
                  for(i_Loop = 0; i_Loop < 100; i_Loop ++)
  {
        n = IC2Value;
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  Delay(10);
  GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  Delay(10);
printf(" %d \n",n);
               
               
  }
                         
   }

}

void Tim2_config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
//--------------设置------------------------

    TIM_DeInit(TIM2);
    // Time base configuration
    TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
    TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
          //TIM_TimeBaseStructure.TIM_channel = TIM_Channel_1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
       

    TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
//--------------测试---------------------------------------

    TIM_SetCounter(TIM2, 0);
    TIM_Cmd(TIM2, ENABLE);

}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| jjg809898461 发表于 2013-11-26 17:09 | 显示全部楼层
自己顶一下
ayb_ice 发表于 2013-11-27 17:04 | 显示全部楼层
不停计数,然后定时读出数据
相减,算出频率
airwill 发表于 2013-11-28 00:03 | 显示全部楼层
这么高的频率, 用 ETR 外部触发吧, 一定时间后, 根据计数值计算出输入频率.
 楼主| jjg809898461 发表于 2013-11-30 11:18 | 显示全部楼层
ayb_ice 发表于 2013-11-27 17:04
不停计数,然后定时读出数据
相减,算出频率

是否tim2下,外部计数,中断输入捕获 二者不能同时使用是吧?
 楼主| jjg809898461 发表于 2013-11-30 11:19 | 显示全部楼层
airwill 发表于 2013-11-28 00:03
这么高的频率, 用 ETR 外部触发吧, 一定时间后, 根据计数值计算出输入频率.

是否tim2下,外部计数,中断输入捕获 二者不能同时使用是么?
 楼主| jjg809898461 发表于 2013-11-30 11:19 | 显示全部楼层
不知道分该给谁啊
airwill 发表于 2013-12-1 09:26 | 显示全部楼层
tim2下,外部计数,中断输入捕获 二者不能同时使用是么?

是的, 外部计数,中断输入捕获, 由于算法不一样, 只能用其中一个
 楼主| jjg809898461 发表于 2013-12-1 11:40 | 显示全部楼层
airwill 发表于 2013-12-1 09:26
tim2下,外部计数,中断输入捕获 二者不能同时使用是么?

是的, 外部计数,中断输入捕获, 由于算法不一样, ...

谢了,问题我已经解决了,但是输入捕获部分居然差一个数,比如应该是1000却出现999,应该是7000却输出7007,分给你 了
晓月穿越 发表于 2015-6-18 10:54 | 显示全部楼层
您好,我也在学习STM32的计数器,用于编码器信号采集,串口输出,可是输出一直为零,能把你改好的程序发给我看看吗,拜托了。410459824@qq.com
 楼主| jjg809898461 发表于 2015-7-1 11:27 | 显示全部楼层
晓月穿越 发表于 2015-6-18 10:54
您好,我也在学习STM32的计数器,用于编码器信号采集,串口输出,可是输出一直为零,能把你改好的程序发给 ...

不好意思一直在忙,你现在解决了吗
晓月穿越 发表于 2015-7-30 10:39 | 显示全部楼层
jjg809898461 发表于 2015-7-1 11:27
不好意思一直在忙,你现在解决了吗

还没呢~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

13

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部