OpenEdv-开源电子网

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

TIM4输入捕获的问题

[复制链接]

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
发表于 2015-7-6 14:49:42 | 显示全部楼层 |阅读模式
5金钱
TIM5的输入捕获通道1,改成TIM4的输入捕获通道1,除了把代码的TIM5改成TIM4之外,还有就是PA0改成了PB6,定时器使能一下,IO配置成下拉输入以外,还有什么需要修改的呢。我修改了这些地方都不成功。有没有大神来给解答一下,在线等。谢谢

最佳答案

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

彻底解决了,是我自己的下拉设置的问题,感谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
 楼主| 发表于 2015-7-6 14:49:43 | 显示全部楼层
彻底解决了,是我自己的下拉设置的问题,感谢!
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-7-6 15:58:21 | 显示全部楼层
中断向量配置了么?
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
 楼主| 发表于 2015-7-6 18:39:00 | 显示全部楼层
回复【2楼】lycreturn:
----------------------------
能具体一点吗?中断分组我没有修改。
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
 楼主| 发表于 2015-7-6 18:39:51 | 显示全部楼层
#include "timer.h"

void TIM4_Cap_Init(u16 arr,u16 psc)
{  
RCC->APB1ENR|=1<<2;    //TIM4 ?±?????? 
RCC->APB2ENR|=1<<3;     //????PORTB?±??  
 
GPIOB->CRL&=0XF0FFFFFF; //PB6 ???????°?è??  
GPIOB->CRL|=0X08000000; //PB6 ????   
GPIOB->ODR|=0<<0; //PB6 ????
  
  TIM4->ARR=arr;   //?è?¨?????÷×?????×°??   
TIM4->SC=psc;   //?¤·????÷ 

TIM4->CCMR1|=1<<0; //CC1S=01  ?????????? IC1??????TI1??
  TIM4->CCMR1|=0<<4;  //IC1F=0000 ???????????¨?÷ ?????¨
  TIM4->CCMR1|=0<<10;  //IC2PS=00  ????????·???,??·??? 

TIM4->CCER|=0<<1;  //CC1P=0 ??????????
TIM4->CCER|=1<<0;  //CC1E=1  ???í?????????÷???????????????÷??

TIM4->DIER|=1<<1;    //???í????????
TIM4->DIER|=1<<0;    //???í?ü??????
TIM4->CR1|=0x01;     //?????¨?±?÷4
MY_NVIC_Init(2,0,TIM4_IRQn,2);//????2??×???????0??×é2    
}

//????×???
//[7]:0,??????????????;1,??????????????.
//[6]:0,????????????????;1,??????????????????.
//[5:0]:???????????ó??????????
u8  TIM4CH1_CAPTURE_STA=0; //????????×???     
u16 TIM4CH1_CAPTURE_VAL; //??????????
//?¨?±?÷5????·??????ò  
void TIM4_IRQHandler(void)
{      
u16 tsr;
tsr=TIM4->SR;
  if((TIM4CH1_CAPTURE_STA&0X80)==0)//????????????
{
if(tsr&0X01)//????
{     
if(TIM4CH1_CAPTURE_STA&0X40)//??????????????????
{
if((TIM4CH1_CAPTURE_STA&0X3F)==0X3F)//?????????¤??
{
TIM4CH1_CAPTURE_STA|=0X80;//±ê????????????????
TIM4CH1_CAPTURE_VAL=0XFFFF;
}else TIM4CH1_CAPTURE_STA++;
}  
}
if(tsr&0x02)//????1·??ú????????
{
if(TIM4CH1_CAPTURE_STA&0X40) //???????????????? 
{   
TIM4CH1_CAPTURE_STA|=0X80; //±ê?????????????????????????í
    TIM4CH1_CAPTURE_VAL=TIM4->CCR1; //?????±?°????????.
  TIM4->CCER&=~(1<<1); //CC1P=0 ?è??????????????
}else   //????????,????????????????
{
TIM4CH1_CAPTURE_STA=0; //????
TIM4CH1_CAPTURE_VAL=0;
TIM4CH1_CAPTURE_STA|=0X40; //±ê????????????????
  TIM4->CNT=0; //?????÷????
  TIM4->CCER|=1<<1;  //CC1P=1 ?è??????????????
}     
}               
  }
TIM4->SR=0;//????????±ê????      
}
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-7-6 21:15:49 | 显示全部楼层
回复【4楼】团:
---------------------------------
你用的什么开发板    战舰PA0接的是key_up按键   B6是没接按键的   所以你最好用一根杜邦线做实验
上面你配置PB6 上下拉有点问题    这个实验是捕获上升沿    所以 配置为下拉    然后用杜邦线去接触VCC3.3
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
 楼主| 发表于 2015-7-6 21:28:41 | 显示全部楼层
我用的STM32最小系统版做的实验,TIM5的PA0我也是接了杜邦线去碰触的5V的高电平,改成PB6之后也是碰触高电平。我那个PB6下拉的问题是什么?我刚测试了一下,我这个程序可以捕获低电平的时间。我不明白为什么会这样,手册里的寄存器都是TIMx,所以我觉得TIMx之间都是可以等同的。
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
 楼主| 发表于 2015-7-6 21:35:37 | 显示全部楼层
我明白了,我借了个战舰开发板,测试了一下可以,是因为我开发板的原因。
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-8-3
在线时间
0 小时
 楼主| 发表于 2015-7-6 21:35:49 | 显示全部楼层
谢谢解答。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 16:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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