OpenEdv-开源电子网

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

求助(写错了是4K)

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-11-26
在线时间
0 小时
发表于 2012-11-26 10:58:31 | 显示全部楼层 |阅读模式
各位大虾
我正在做个捕捉的东西,输入源PA0(4.000KHZ)左右的周期性方波(不好意思写错了,是4K,看错了示波器)
通过这个捕捉得出的值来自动调整另一个端口的输出是频率是输入源PA0的8倍(25US)左右(用另一定时器发生)

有点类似类倍频器。

不知怎么配置,配了好多次,实在是没办法
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-11-26
在线时间
0 小时
 楼主| 发表于 2012-11-26 11:01:39 | 显示全部楼层
用PWM输入或捕捉
我试过保存1000个数据,但仿真出来的结果是一开始的几十个数据为0XFFFF,之后有几十个数据貌似正确,之后就是0000,FFFF,我是按DATASHEET配的
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-11-26
在线时间
0 小时
 楼主| 发表于 2012-11-26 11:37:36 | 显示全部楼层
 void TIM2_Configuration(void)
{
    TIM_ICInitTypeDef TIM_ICInitStructure;
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
    TIM_ICInitStructure.TIM_ICFilter = 0x0; 
    TIM_ICInit(TIM2, &TIM_ICInitStructure);

    TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);

    //TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1);   //选择时钟触发源
    //TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);//触发方式
    //TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);

    //TIM_PrescalerConfig(TIM2, 72-1, TIM_PSCReloadMode_Immediate);//72M/72=1000K
}



void TIM2_IRQHandler(void)    
{
 if(TIM_GetITStatus(TIM2, TIM_IT_CC1) == SET)
   {
     /* Clear TIM2 Capture compare interrupt pending bit */
  GPIO_WriteBit(BU,(BitAction)(1 -GPIO_ReadOutputDataBit(BU)));
     TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
     if(CaptureNumber == 0)
      {
        /* Get the Input Capture value */
        IC1ReadValue1 = TIM_GetCapture1(TIM2);
        CaptureNumber = 1;
      }
     else
   {
    if(CaptureNumber == 1)
        {
          /* Get the Input Capture value */
          IC1ReadValue2 = TIM_GetCapture1(TIM2);
         
          /* Capture computation */
          if (IC1ReadValue2 > IC1ReadValue1)
           {
             Capture = (IC1ReadValue2 - IC1ReadValue1);
           }
          else
           {
             Capture = ((0xFFFF - IC1ReadValue1) + IC1ReadValue2);
           }
          /* Frequency computation */
          //TIM2Freq = (uint32_t) SystemCoreClock / Capture;
          CaptureNumber = 0;

       tim2_temp2++;
       if(tim2_temp2<1000)
        {cc2[tim2_temp2]=Capture;}
       else
        {tim2_temp2++;}
       exti0_temp=Capture/2;
        }
   }
   }
}

回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-11-26
在线时间
0 小时
 楼主| 发表于 2012-11-26 14:25:24 | 显示全部楼层
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;     //周期0~FFFF 
TIM_TimeBaseStructure.TIM_Prescaler =(72-1);       //时钟分频 
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV4;   //时钟分割 
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//基本初始化


是否还要设TIM2的方式???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-26 14:32:30 | 显示全部楼层
4M?另外一个定时器输出是这个的4倍?那就是16M方波输出?
STM32的定时器输出不了呢...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-11-26
在线时间
0 小时
 楼主| 发表于 2012-11-27 08:15:29 | 显示全部楼层

没有人在吗

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 00:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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