打印

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

[复制链接]
3173|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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);

}

程序.rar

340.34 KB

相关帖子

沙发
jjg809898461|  楼主 | 2013-11-26 17:09 | 只看该作者
自己顶一下

使用特权

评论回复
板凳
ayb_ice| | 2013-11-27 17:04 | 只看该作者
不停计数,然后定时读出数据
相减,算出频率

使用特权

评论回复
地板
airwill| | 2013-11-28 00:03 | 只看该作者
这么高的频率, 用 ETR 外部触发吧, 一定时间后, 根据计数值计算出输入频率.

使用特权

评论回复
5
jjg809898461|  楼主 | 2013-11-30 11:18 | 只看该作者
ayb_ice 发表于 2013-11-27 17:04
不停计数,然后定时读出数据
相减,算出频率

是否tim2下,外部计数,中断输入捕获 二者不能同时使用是吧?

使用特权

评论回复
6
jjg809898461|  楼主 | 2013-11-30 11:19 | 只看该作者
airwill 发表于 2013-11-28 00:03
这么高的频率, 用 ETR 外部触发吧, 一定时间后, 根据计数值计算出输入频率.

是否tim2下,外部计数,中断输入捕获 二者不能同时使用是么?

使用特权

评论回复
7
jjg809898461|  楼主 | 2013-11-30 11:19 | 只看该作者
不知道分该给谁啊

使用特权

评论回复
8
airwill| | 2013-12-1 09:26 | 只看该作者
tim2下,外部计数,中断输入捕获 二者不能同时使用是么?

是的, 外部计数,中断输入捕获, 由于算法不一样, 只能用其中一个

使用特权

评论回复
9
jjg809898461|  楼主 | 2013-12-1 11:40 | 只看该作者
airwill 发表于 2013-12-1 09:26
tim2下,外部计数,中断输入捕获 二者不能同时使用是么?

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

谢了,问题我已经解决了,但是输入捕获部分居然差一个数,比如应该是1000却出现999,应该是7000却输出7007,分给你 了

使用特权

评论回复
10
晓月穿越| | 2015-6-18 10:54 | 只看该作者
您好,我也在学习STM32的计数器,用于编码器信号采集,串口输出,可是输出一直为零,能把你改好的程序发给我看看吗,拜托了。410459824@qq.com

使用特权

评论回复
11
jjg809898461|  楼主 | 2015-7-1 11:27 | 只看该作者
晓月穿越 发表于 2015-6-18 10:54
您好,我也在学习STM32的计数器,用于编码器信号采集,串口输出,可是输出一直为零,能把你改好的程序发给 ...

不好意思一直在忙,你现在解决了吗

使用特权

评论回复
12
晓月穿越| | 2015-7-30 10:39 | 只看该作者
jjg809898461 发表于 2015-7-1 11:27
不好意思一直在忙,你现在解决了吗

还没呢~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

71

帖子

0

粉丝