OpenEdv-开源电子网

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

请教捕获实验的问题

[复制链接]

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
发表于 2015-1-16 10:58:07 | 显示全部楼层 |阅读模式
5金钱

代码如下
void TIM5_Cap_Init(u16 arr,u16 psc)
{
 TIM_ICInitTypeDef TIM5_ICInitStructure;
 GPIO_InitTypeDef GPIO_InitStructure;
 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
 
 NVIC_InitTypeDef NVIC_InitStructure;
 
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //TIM_CH2
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
 GPIO_ResetBits(GPIOA,GPIO_Pin_0);
 
 TIM_TimeBaseStructure.TIM_Period=arr;                
 TIM_TimeBaseStructure.TIM_Prescaler=psc;             
 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;    
 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
 
 TIM5_ICInitStructure.TIM_Channel=TIM_Channel_1;
 TIM5_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;
 TIM5_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
 TIM5_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;
 TIM5_ICInitStructure.TIM_ICFilter=0x00;
 TIM_ICInit(TIM5,&TIM5_ICInitStructure);
 
 NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;  
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;  
 NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;  
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
 NVIC_Init(&NVIC_InitStructure);   
 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);
 TIM_Cmd(TIM5,ENABLE);
 
}
u8 TIM5CH1_CAPTURE_STA=0;  
u16 TIM5CH1_CAPTURE_VAL;   
void TIM5_IRQHandler(void)
{
 if((TIM5CH1_CAPTURE_STA&0x80)==0)
 {
 if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)
  {
  if(TIM5CH1_CAPTURE_STA&0x40)
  {
   if((TIM5CH1_CAPTURE_STA&0x3F)==0x3F)
   {
   TIM5CH1_CAPTURE_STA|=0x80;
   TIM5CH1_CAPTURE_VAL=0xFFFF;
   }else TIM5CH1_CAPTURE_STA++;
   }
  }
 if(TIM_GetITStatus(TIM5,TIM_IT_CC1)!=RESET)
 {
 if(TIM5CH1_CAPTURE_STA&0x40)
   {
  TIM5CH1_CAPTURE_STA|=0x80;
  TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
  TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);
   }else
   {
  TIM5CH1_CAPTURE_STA=0;
  TIM5CH1_CAPTURE_VAL=0;
  TIM_SetCounter(TIM5,0);
  TIM5CH1_CAPTURE_STA|=0x40;
  TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);
   }
  }
 }
  TIM_ClearITPendingBit(TIM5,TIM_IT_CC1|TIM_IT_Update);
 
}
我发现把代码第一行 TIM_ICInitTypeDef TIM5_ICInitStructure;
放到函数外面的话按键就有反馈,不过一直都串口反馈同一个数值4194303us
如果把TIM_ICInitTypeDef TIM5_ICInitStructure;放到初始化函数里面,按键串口完全没反馈。都不正常呀。不知道哪里出的问题大神们请指教。

最佳答案

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

回复【9楼】正点原子: --------------------------------- 终于解决了,发现还是自己不够细心的问题,TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); 这句里面应该是TIM5才对,搞了好久没发觉。后来跟踪也看不出哪里出错,我跟踪的是TIM5CH1_CAPTURE_VAL的值。 后来只好把原子哥的程序一点一点的覆盖自己的程序,下载到板子上认证,结果发现是这里打错了一个数字。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-16 10:58:08 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
终于解决了,发现还是自己不够细心的问题,TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
这句里面应该是TIM5才对,搞了好久没发觉。后来跟踪也看不出哪里出错,我跟踪的是TIM5CH1_CAPTURE_VAL的值。
后来只好把原子哥的程序一点一点的覆盖自己的程序,下载到板子上认证,结果发现是这里打错了一个数字。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2015-1-16 17:58:52 | 显示全部楼层
TIM_ICInitTypeDef TIM5_ICInitStructure;   放在里面  验证无问题
4194303s                高电平时间最大值     
根据   if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F   最大时间为   4194303s
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-16 19:46:00 | 显示全部楼层
回复【2楼】login_FAE:
---------------------------------
为啥放里面才没问题?放外面就不行了呢?还有原子哥的程序是检测按键时间长短的,但是我这里怎么只能检测到最大的4194303us呢?每次按下去,串口都反馈4194303us
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-16 19:48:02 | 显示全部楼层
回复【2楼】login_FAE:
---------------------------------
按下去时间长短不同,串口显示时间应该不一样才对的呀,我这里全是4194303us,不对的呀
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-16 20:15:04 | 显示全部楼层
回复【3楼】lovelydog:
---------------------------------
仿真跟踪下
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2015-1-16 21:24:32 | 显示全部楼层
回复【4楼】lovelydog:
---------------------------------
时间都是一样  那就有问题了
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-17 11:42:21 | 显示全部楼层
回复【6楼】login_FAE:
---------------------------------
就是呀,到底是哪里有问题呀
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-17 11:45:14 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥,我仿真应该看哪个参数呀?要不你给我演示一下
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-17 23:10:33 | 显示全部楼层
回复【8楼】lovelydog:
---------------------------------
要回分析问题啊.
既然是固定值,就去看为什么是固定的?
跟着你自己的思路,去单步跟踪程序,然后在可疑的地方设置断点,观察运行状态.

学会分析问题,远比你得到这个问题的答案重要的多啊.
现在的人越来越不会分析问题了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-21 15:27:10 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子哥,我一直有个疑问。为啥你的程序里面的一个文件中用到
例如TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
不是应该在这个文件的最上面加包含TIM_TimeBaseInitTypeDef 的头文件#include "stm32f10x_tim.h"才对吗?
为啥你都不用加这个头文件,但是编译又能通过的呢?我自己写的时候反而总是要添加头文件,太烦了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-22 00:24:20 | 显示全部楼层
回复【11楼】lovelydog:
---------------------------------
因为头文件可以层层包含
我们的都在“stm32f10x_conf.h”里面包含了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-16
在线时间
0 小时
 楼主| 发表于 2015-1-22 08:49:52 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
哦……明白了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-8 15:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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