OpenEdv-开源电子网

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

stm32f0用定时器的通道进行外部输入捕获失败(纯移植STM32F1系列) 无解

[复制链接]

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-3-1
在线时间
1 小时
发表于 2015-2-11 22:22:32 | 显示全部楼层 |阅读模式
5金钱


#include "PPM.h"
#include "USART1.h"

int ppm=0;
 
void TIM14_PPM_Init(void)
{
     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   TIM_ICInitTypeDef  TIM14_ICInitStructure;
     NVIC_InitTypeDef NVIC_InitStructure;
     GPIO_InitTypeDef GPIO_InitStructure;
    
 
   
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);       
             
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_0); //  ????
 
 
    NVIC_InitStructure.NVIC_IRQChannel = TIM14_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPriority =0x00;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStructure);
 

     TIM_TimeBaseStructure.TIM_Period = 30000;           // ×?????×°???????÷????????(??????)
     TIM_TimeBaseStructure.TIM_Prescaler = 45; //?±???¤·?????
     TIM_TimeBaseStructure.TIM_ClockDivision = 0;   
     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//?ò??????????
   TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
  
   
   TIM14_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01  ?????????? IC1??????TI1??
    TIM14_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //??????????
    TIM14_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //??????TI1??
    TIM14_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;  //????????·???,??·???
    TIM14_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 ???????????¨?÷ ?????¨
    TIM_ICInit(TIM14, &TIM14_ICInitStructure);

   
   TIM_ITConfig(TIM14,TIM_IT_CC1,ENABLE);//???í?ü?????? ,???íCC1IE???????? 
    // TIM_ITConfig(TIM14,TIM_IT_Update,ENABLE);//???????¨?±?÷?ü??????????????·???°ü
    TIM_Cmd(TIM14, ENABLE);

}

 


char Rising;
char Falling;
char Rising=1;
char Falling=0;
int now;
int last; 
int  ppm; 


void TIM14_IRQHandler(void)
{
 
     if (TIM_GetITStatus(TIM14, TIM_IT_CC1) != RESET)//????·??ú????????
  {
      TIM_ClearITPendingBit(TIM14, TIM_IT_CC1);
   if(Rising==1)  //????????????????   
   {      
      last=TIM_GetCapture1(TIM14);
      TIM_OC1PolarityConfig(TIM14,TIM_ICPolarity_Falling ); //CC1P=0 ?è??????????????
    Rising=0;
    Falling=1;
    printf("last%d\r\n",last);
    
   }
   if(Falling==1)  //??????????????   
   {
     now=TIM_GetCapture1(TIM14);
     ppm=now-last;
     TIM_OC1PolarityConfig(TIM14,TIM_ICPolarity_Rising);  //CC1P=1 ?è??????????????
     Rising=1;
     Falling=0;
     printf("now%d\r\n",now);
     printf("ppm   %d\r\n",ppm);
   
   }     
                      
     
  }
 }

最佳答案

查看完整内容[请看2#楼]

回复【3楼】红木甲板: --------------------------------- 问题找到,IO复用以及中断服务函数的的原因!谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-3-1
在线时间
1 小时
 楼主| 发表于 2015-2-11 22:22:33 | 显示全部楼层
回复【3楼】红木甲板:
---------------------------------
问题找到,IO复用以及中断服务函数的的原因!谢谢
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-3-1
在线时间
1 小时
 楼主| 发表于 2015-2-11 22:24:58 | 显示全部楼层
补充:实际上  不会产生溢出情况,因此中断函数没进行相应溢出处理
回复

使用道具 举报

8

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-27
在线时间
120 小时
发表于 2015-2-12 08:41:53 | 显示全部楼层
回复【2楼】小小飞行器:
---------------------------------
先确定芯片有木有这个定时器
库函数是F0系列的吗,不同系列的时钟配置外设寄存器配置可能不太一样
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-3-1
在线时间
1 小时
 楼主| 发表于 2015-2-12 10:06:30 | 显示全部楼层
回复【3楼】红木甲板:
---------------------------------
函数库是F0系列的,这个定时器已经通过测试了,时钟配置也就哪几种,都试过了 ···  郁闷,有空你也研究研究,谢谢你哈
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 19:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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