OpenEdv-开源电子网

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

定时器外部脉冲计数问题,求助。。。

[复制链接]

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
发表于 2013-6-16 07:28:56 | 显示全部楼层 |阅读模式

方案:用TIM1定时器产生周期性的脉冲,在PC.2端口输出周期性的脉冲,PA.8接LED灯,也是输出与PC.2相同的周期的脉冲,用于查看脉冲产生是否正常,再用杜邦线将PC.2脚和TIM3_CH1脚(PA.6),即将PC.2上的脉冲输入到TIM3_CH1通道上,TIM3设置成外部脉冲计数,最终控制PD.2上接的LED灯。

问题:能产生脉冲,但TIM3这部分的计数器好像没反应,没计数


主函数main()

#include "sys.h"
#include "led.h"
#include "tim1ti.h"
#include "delay.h"
#include "tim2.h"

int main(void)

  u16 t,j=0;
  Stm32_Clock_Init(72);
  delay_init(72); 

   led_init();
  
   tim1ti_init(4999,7999);
   tim2_init(1000,1);
   while(1)
   {
     t=TIM2->CNT;
     if(t>5)
  {
     j++;
  if(j>10)
  {
     PDout(2)=!PDout(2);     //led灯
     delay_ms(500);
  }
 
 
 
 
 
  }


   }

 

}

 

子程序LED.C

#include "led.h"

void led_init(void)
{
  RCC->APB2ENR|=1<<5;    //设置PD时钟
  RCC->APB2ENR|=1<<4;     //设置PC时钟
  RCC->APB2ENR|=1<<2;      //设置PA时钟
  GPIOC->CRL|=1<<8;              //配置PC.2为推挽输出,10M模式
  GPIOC->ODR|=1<<2;               //初始化PC.2输出为高电平

  GPIOD->CRL|=1<<8;              //配置PD.2为推挽输出,10M模式
  GPIOD->ODR|=1<<2;               //初始化PD.2输出为高电平

  GPIOA->CRH|=1;   //设置端口PA.8为推挽输出,10M模式
  GPIOA->ODR|=1<<8;                //初始化PA.8输出为高电平
}

上面的子程序函数LED的led.h文件

#ifndef __LED_H
  #define __LED_H
  #include "sys.h"
  void led_init(void);
#endif

 


TIM1产生定时中断的子程序函数

#include "tim1ti.h"
#include "led.h"
#include "delay.h"
void tim1ti_init(u16 arr,u16 psc)
{

 
  
  RCC->APB2ENR|=1<<11;           //设置TIM1定时器时钟开启
  TIM1->SMCR&=0XFFF0;    //选择定时器TIM1时钟源为内部时钟,即SMS[2:0]为000B
 
  TIM1->ARR=arr;                //设置自动重装载寄存器,16为寄存器
  TIM1->SC=psc;                 //设置TIM1 预分频器,16为寄存器
  TIM1->RCR=0;     //设置重复计数器的值为0,即REP[7:0]为0
  TIM1->CR1&=0xffef;   //设置DIR为0,即计数器向上计数
    
  TIM1->CR1|=1<<2;      //选择更新请求源,设置URS
  TIM1->DIER|=1;    //UIE=1;允许更新中断
  TIM1->CR1|=1;        // 使能计数器,CEN=1
      
  MY_NVIC_Init(1,3 ,TIM1_UP_IRQChannel,1); 
 
}

TIM1定时器的中断函数

void TIM1_UP_IRQHandler(void)
{
 
  PCout(2)=!PCout(2);           //输出脉冲
  PAout(8)=!PAout(8);          //此脚接LED灯,用于查看产生的脉冲是否正常
 
  delay_ms(100);
 
  TIM1->SR|=1;       //清除更新中断标志
}


上面的TIM1子程序函数的tim1ti.h文件

#ifndef __TIM1TI_H
   #define __TIM1TI_H
   #include "sys.h"
   void tim1ti_init(u16 arr,u16 psc);

#endif

 

TIM3定时器,外部脉冲计数子程序函数

#include "tim2.h"
 
void tim2_init(u16 arr,u16 psc)
{
  RCC->APB1ENR|=1<<1;       //设置TIM3时钟 
 
  RCC->APB2ENR|=1<<2;   //PA时钟开启
  GPIOA->CRL|=4<<24;           //设置PA.6为浮空输入模式

  TIM3->SMCR&=0XFF80;
  TIM3->SMCR|=0X0057;   //设置TS[2:0]为101B,即:选择用于同步计数器的触发输入为滤波后的定时器输入1(TI1FP1).
    //SMS[2:0]为111B,即:从模式选择,为外部时钟模式1,选择触发输入TRGI的上升沿驱动计数器
 

  TIM3->CCMR1&=0XFFFC;
  TIM3->CCMR1|=1;           //CC1S[1:0]=10,设置CC1通道配置为输入,IC1映射在TI1上 ,无滤波器
 
  TIM3->CCER&=0XFFFD;   //设置CC1P=0,即不反相,上升沿有效

  TIM3->ARR=arr;              //设置自动装载寄存器值
  TIM3->RCR=0;                //重复寄存器值为0
  TIM3->SC=psc;
  TIM3->CR1&=0xFFEF;  //设置计数器方向为向上计数,即DIR=0
  TIM3->CR1|=1;             //启动计数器,CEN=1
}

 


上面的TIM3定时器的子函数的tim2.h文件
#ifndef __TIM2_H
  #define __TIM2_H
  #include "sys.h"
  void tim2_init(u16 arr,u16 psc);
#endif

 

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-16 11:27:52 | 显示全部楼层
//TIM5,外部计数模式
void TIM5_Excnt_Init(u16 arr,u16 psc)


RCC->APB1ENR|=1<<3;    //TIM5 时钟使能 
RCC->APB2ENR|=1<<2;     //使能PORTA时钟  
 
GPIOA->CRL&=0XFFFFFFF0; //PA0 清除之前设置  
GPIOA->CRL|=0X00000008; //PA0 输入   
GPIOA->ODR|=0<<0; //PA0 下拉
  
  TIM5->ARR=arr;   //设定计数器自动重装值   
TIM5->SC=psc;   //预分频器 

TIM5->CCMR1|=1<<0; //CC1S=01  选择输入端 IC1映射到TI1上
  TIM5->CCMR1|=0<<4;  //IC1F=0000 配置输入滤波器 不滤波

TIM5->CCER|=0<<1;  //CC1P=0 上升沿计数
   TIM5->SMCR|=5<<4;    //触发选择:滤波后的定时器输入1(TI1FP1)
   TIM5->SMCR|=7<<0;    //外部时钟模式1
  TIM5->CR1|=1<<0;       //启动计数器,CEN=1
}
int main(void)
{
u32 oldcnt=0;  
  Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600);   //串口初始化为9600
delay_init(72);       //延时初始化 
    TIM5_Excnt_Init(0XFFFF,0); //外部计数,最大值0xffff
    while(1)
{
  delay_ms(10);
if(oldcnt!=TIM5->CNT)
{
oldcnt=TIM5->CNT;
printf("cnt:%d\r\n",oldcnt);
}

}
}

以上代码,在战舰板实测OK.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 2 反对 1

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-16 11:28:16 | 显示全部楼层
不停的按PA0,就可以看到串口不停的打印出计数值.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-16 11:28:54 | 显示全部楼层


我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

92

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2013-3-21
在线时间
0 小时
发表于 2013-6-16 16:50:57 | 显示全部楼层
回复【楼主位】ximilenfu:
----------------------------
楼主主函数没写对啊   用的是tim3  而你用的是T=TIM2->CNT
努力努力
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
 楼主| 发表于 2013-6-16 19:46:31 | 显示全部楼层
回复【5楼】happy:
---------------------------------
是额。没注意呵呵,谢那,不过还是不行
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
 楼主| 发表于 2013-6-16 19:47:12 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
灰常感谢,太给力了。。。
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
 楼主| 发表于 2013-6-16 22:19:40 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我将TIM5改成TIM2了,我的开发板是miniSTM32的,用WK_UP按键,可串口不能打印,还是无法计数。。。


void TIM2_Excnt_Init(u16 arr,u16 psc) 
{  

RCC->APB1ENR|=1<<0;    //TIM2 时钟使能  
RCC->APB2ENR|=1<<2;     //使能PORTA时钟   
  

GPIOA->CRL|=8<<0; //PA0 输入 
  
  GPIOA->ODR&=0XFFFE; //PA0 下拉 
   
  TIM2->ARR=arr;   //设定计数器自动重装值    
TIM2->SC=psc;   //预分频器  

TIM2->CCMR1|=1<<0; //CC1S=01  选择输入端 IC1映射到TI1上 
  TIM2->CCMR1|=0<<4;  //IC1F=0000 配置输入滤波器 不滤波 

TIM2->CCER|=0<<1;  //CC1P=0 上升沿计数 
   TIM2->SMCR|=5<<4;    //触发选择:滤波后的定时器输入1(TI1FP1) 
   TIM2->SMCR|=7<<0;    //外部时钟模式1 
  TIM2->CR1|=1<<0;       //启动计数器,CEN=1 





int main(void) 

  u32 oldcnt=0;   
  Stm32_Clock_Init(9); //系统时钟设置 
  uart_init(72,9600);   //串口初始化为9600 
  delay_init(72);       //延时初始化  
  TIM2_Excnt_Init(0XFFFF,0); //外部计数,最大值0xffff 
    while(1) 
   { 
     delay_ms(10); 
     if(oldcnt!=TIM2->CNT) 
     { 
        oldcnt=TIM2->CNT; 
        printf("cnt:%d\r\n",oldcnt); 



}     // 不停的按PA0,就可以看到串 口不停的打印出计数值.
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
 楼主| 发表于 2013-6-16 22:22:32 | 显示全部楼层
 


回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-16 22:52:18 | 显示全部楼层
GPIOA配置你想偷工减料,结果适得其反.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-6-15
在线时间
0 小时
 楼主| 发表于 2013-6-17 18:40:07 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
嘻嘻,忘了系统复位时,端口GPIOX_CRL为0X4444 4444,所以在设置“GPIOA->CRL|=8<<0; //PA0 输入 ”时,即PA0配置为1000B了,与PA0复位值:0100B相或,导致PA0的值为1100B,而输入模式11是保留的,所以此设置没用。自己好粗心哈,谢谢原子哥哈
回复 支持 反对

使用道具 举报

6

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-6-17
在线时间
7 小时
发表于 2013-8-30 18:11:57 | 显示全部楼层
很给力 感谢这个帖子 我也调通了其他通道的计数。。。
回复 支持 反对

使用道具 举报

6

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-6-17
在线时间
7 小时
发表于 2013-10-16 11:04:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥 你好 我用你的这个代码调试了其他定时器的通道1和通道2都可以,下面是我用TIM3_CH4调试不知道怎么都不可以,是不是定时器外部计数模式只适合CH1和CH2呢?PB1是TIM3_CH4.
void TIM3_Excnt1_Init(u16 arr,u16 psc) 
{  
RCC->APB1ENR|=1<<1;    //TIM3 时钟使能  
RCC->APB2ENR|=1<<3;     //使能PORTB时钟   
  
GPIOB->CRL&=0XFFFFFF0F; //PB1 清除之前设置   
GPIOB->CRL|=0X00000080; //PB1 输入    
GPIOB->ODR|=0<<1; //PB1 下拉
   
TIM3->ARR=arr;   //设定计数器自动重装值     
TIM3->SC=psc;   //预分频器  

TIM3->CCMR2|=1<<8; //CC4S=10  选择输入端 IC4映射到TI4上  
TIM3->CCMR2|=0<<12;  //IC4F=0000 配置输入滤波器 不滤波  

TIM2->CCER|=0<<13;  //CC4P=0 上升沿计数
TIM3->SMCR|=4<<4;    //触发选择:内部触发器 
TIM3->SMCR|=7<<0;    //外部时钟模式1  
TIM3->CR1|=1<<0;       //启动计数器,CEN=1    


}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-16 11:31:30 | 显示全部楼层
回复【13楼】ljh407055315:
---------------------------------
是的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-4-5
在线时间
2 小时
发表于 2013-12-11 10:05:24 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
得好好学学,问一下:是定时器的每个通道都能实现外部计数吗?还是固定的几个脚位?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-11 15:53:41 | 显示全部楼层
回复【15楼】husunmoon99:
---------------------------------
不是每个脚都可以的
貌似CH3,CH4就不行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-9-1
在线时间
0 小时
发表于 2013-12-12 17:57:37 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
请问原子哥 比如我用了tim2的ch1和ch2来外部计数,那我还能不能用tim2来干其他事情,比如定时1s产生中断,ch3,ch4用来产生PWM呢?
http://blog.sina.com.cn/u/2126609520 新浪微博@开着拖拉机还唱歌
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-12 23:53:27 | 显示全部楼层
回复【17楼】wan296555869:
---------------------------------
不能同时用CH1,CH2哦.
外部计数模式,只能选择一个通道的.
如果你还想搞其他的,换个定时器吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

36

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-9-1
在线时间
0 小时
发表于 2013-12-13 11:56:30 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
那我能不能设定外部计数模式来产生定时更新中断呢,应该和内部时钟一样的设置吧,在不考虑时间的准确性的情况下
http://blog.sina.com.cn/u/2126609520 新浪微博@开着拖拉机还唱歌
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-13 14:43:45 | 显示全部楼层
回复【19楼】wan296555869:
---------------------------------
可以
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-12-7
在线时间
0 小时
发表于 2014-1-14 16:30:19 | 显示全部楼层
//请问一下我这么配置 TIM4哪里有问题 ,计不了数啊。。。大神请指教。

void TIM4_Excnt_Init(u16 arr,u16 psc)  
{   

RCC->APB1ENR|=1<<2;    //TIM4 ????   
RCC->APB2ENR|=1<<3;     //??PORTB??    


// RCC->APB1ENR|=1<<3;   
// RCC->APB2ENR|=1<<2;    

GPIOB->CRL&=0XFFFFFFF0;
GPIOB->CRL|=0X00000008;
GPIOB->ODR|=0<<6;       

TIM4->ARR=arr;          
TIM4->SC=psc;          

TIM4->CCMR1|=1<<0; //CC1S=01  ????? IC1???TI1?  
TIM4->CCMR1|=0<<4;  //IC1F=0000 ??????? ???  

TIM4->CCER|=0<<1;  //CC1P=0 ?????  
TIM4->SMCR|=5<<4;    //????:?????????1(TI1FP1)  
TIM4->SMCR|=7<<0;    //??????1  
TIM4->CR1|=1<<0;       //?????,CEN=1  
}
回复 支持 反对

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2014-4-19
在线时间
41 小时
发表于 2014-4-27 11:00:25 | 显示全部楼层
回复【8楼】ximilenfu:
--------------------------------我也遇到了同样的问题,能不能将你的源代码发给我参考参考呢?
我QQ邮箱:154527340@qq.com
新手的路还很长
回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
发表于 2014-8-8 09:04:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
如果要计数时间范围很长呢,比如一整天。用这种方式还好用么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-9 00:41:27 | 显示全部楼层
回复【23楼】can123dao:
---------------------------------
这个,你设置u32
自己去计算,能计时多久
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2014-3-23
在线时间
22 小时
发表于 2014-8-12 19:03:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥你这个代码可以用在光电编码器上吧,同时也适用于MINIstm32吧
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-12 22:58:58 | 显示全部楼层
回复【25楼】张仁良:
---------------------------------
可以,不过V2.0或者之前的版本,是不具有TIM5的....
V3.0的mini板,才有TIM5
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2014-8-5
在线时间
4 小时
发表于 2014-10-31 22:47:24 | 显示全部楼层
感谢原子哥,我已成功读出脉冲
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2014-11-26
在线时间
1 小时
发表于 2014-11-28 17:49:49 | 显示全部楼层
回复【20楼】正点原子:
---------------------------------
我读出的数据  误差很大。我是用导线连接的,按理应该只有一个上升沿计数,但是现在的实验现象是计了很多个。
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2015-5-19
在线时间
0 小时
发表于 2015-5-19 09:35:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
亲哥哥,有没有库函数版啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-19 23:32:50 | 显示全部楼层
回复【29楼】记忆有你2010:
---------------------------------
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

145

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2015-5-14
在线时间
65 小时
发表于 2015-12-7 16:00:23 | 显示全部楼层
这个脉冲计数我试了,CH3和CH4好像真不行,在F407上试的,也只有CH1可以计数,CH2计数也不行。
回复 支持 反对

使用道具 举报

0

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2014-1-11
在线时间
23 小时
发表于 2015-12-12 12:05:41 | 显示全部楼层
这篇文章很实用,谢谢!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2016-1-6
在线时间
1 小时
发表于 2016-1-6 10:57:58 | 显示全部楼层
楼主 你可以把你这个共享给我嘛
回复 支持 反对

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-2-29
在线时间
25 小时
发表于 2016-3-6 21:41:02 | 显示全部楼层
ximilenfu 发表于 2013-6-16 19:46
回复【5楼】happy:
---------------------------------
是额。没注意呵呵,谢那,不过还是不行

下来学一学了。。。。。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-5-31
在线时间
1 小时
发表于 2016-6-3 17:53:16 | 显示全部楼层
正点原子 发表于 2013-6-16 11:27
//TIM5,外部计数模式
void&nbsp;TIM5_Excnt_Init(u16&nbsp;arr,u16&nbsp;psc)
{&nbsp;
       
        RCC-&gt;APB1ENR|= ...

原子哥,我用这个程序改成TIM2的CH1_ETR通道,就是PA0脚,串口读不出来数啊,程序有库函数版的吗,寄存器版的资料在哪找啊。谢谢
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-5-31
在线时间
1 小时
发表于 2016-6-3 18:08:39 | 显示全部楼层
正点原子 发表于 2013-6-16 11:27
//TIM5,外部计数模式
void&nbsp;TIM5_Excnt_Init(u16&nbsp;arr,u16&nbsp;psc)
{&nbsp;
       
        RCC-&gt;APB1ENR|= ...

原子哥,我参照你的程序,脉冲发生器输出1KHz的方波,峰峰值是3.3V,接到TIM2_CH1_ETR,用TIM4定时一秒,正确的应该是计1000个数,但是我计到1400多个数。这是为什么啊。而且脉冲的峰峰值不同,计到的数也不同,峰峰值是3.0V时,一秒计600多个数。 标准的峰峰值是多少啊。
回复 支持 反对

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-13
在线时间
18 小时
发表于 2016-8-15 16:45:45 | 显示全部楼层
正点原子 发表于 2013-6-16 11:27
//TIM5,外部计数模式
void&nbsp;TIM5_Excnt_Init(u16&nbsp;arr,u16&nbsp;psc)
{&nbsp;
       
        RCC-&gt;APB1ENR|= ...

原子哥,TIM5也可以像TIM2_ETR那样设置成ETR模式的外部计数吗
回复 支持 反对

使用道具 举报

13

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2016-8-13
在线时间
24 小时
发表于 2016-8-26 23:49:31 | 显示全部楼层
正点原子 发表于 2013-6-16 11:27
//TIM5,外部计数模式
void&nbsp;TIM5_Excnt_Init(u16&nbsp;arr,u16&nbsp;psc)
{&nbsp;
       
        RCC-&gt;APB1ENR|= ...

小白,想看看库函数的写法
回复 支持 反对

使用道具 举报

2

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2017-4-15
在线时间
27 小时
发表于 2017-4-28 14:45:15 | 显示全部楼层
受用了      
回复 支持 反对

使用道具 举报

9

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-10-28
在线时间
11 小时
发表于 2018-10-23 14:10:24 | 显示全部楼层
正点原子 发表于 2013-6-16 11:27
//TIM5,外部计数模式
void&nbsp;TIM5_Excnt_Init(u16&nbsp;arr,u16&nbsp;psc)
{&nbsp;
       
        RCC-&gt;APB1ENR|= ...

原子哥,您好,我想请问一下,这个程序,掉电之后上电,就不能计数了,要重新下载程序才可以,是怎么回事呢?
回复 支持 反对

使用道具 举报

7

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-2-28
在线时间
32 小时
发表于 2019-4-3 14:53:25 | 显示全部楼层
PA0是什么?不停地按还要
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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