OpenEdv-开源电子网

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

STM32定时器怎么设置,能够记录外部脉冲数据

[复制链接]

9

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-5-31
在线时间
4 小时
发表于 2012-6-14 14:29:39 | 显示全部楼层 |阅读模式
STM32定时器怎么设置,能够记录外部脉冲数据,是设置为向上计数,然后捕获吗?我想记录到一定的数据后产生中断
电是一种神奇的东西!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-5-31
在线时间
4 小时
 楼主| 发表于 2012-6-14 14:34:48 | 显示全部楼层
电是一种神奇的东西!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

9

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-5-31
在线时间
4 小时
 楼主| 发表于 2012-6-14 17:32:40 | 显示全部楼层

原子哥  我弄了一下午,配置如下,怎么还是CNT寄存器还是没数据······一直是0;脉冲是从 TIM3_CH1输入!!
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure; 
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

/* TIM2 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/* GPIOB clock enable */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_TIM3);

GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP ;
GPIO_Init(GPIOA, &GPIO_InitStructure);


/* Time Base configuration 
这个结构体的初始化只是为了初始化TIM1_CKD_DIV4,可以使CK_INT四分频,这样filter的脉冲宽度又可以增

加了。
经测试发现还有一个小问题,就是TIM_Prescaler,第一次count增加不会被分频,之后的就被分频了,可以

参考图1。

*/
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 0xffff;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


/*下面的中断,可以去掉*/
/* Enable the TIM3 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);


/*时钟的分频部分参考图2, 图1,图4,图5,
计算:通过图1,PCLK1 = HCLK/16,TIM3CLK = 4M
CK_INT(TIM3CLK)再根据图4分频4,再根据图5分频32,之后采样8次,相当于4M/4/32/8 = 3.9K
*/
TIM_TIxExternalClockConfig(TIM3, TIM_TS_TI1FP1, TIM_ICPolarity_Rising, 0xf); //边沿计数;也可以用TIM_TS_TI1FP1 ,上升沿计数

TIM_SelectInputTrigger(TIM3, TIM_TS_ETRF);


//下面这个是使用ETR输入的,当做参考吧
// /* Selects the external clock Mode 1 for TIM2: the external clock is
// connected to ETR input pin, the rising edge is the active edge, no
// filter sampling is done (ExtTRGFilter = 0) and the prescaler is
// fixed to TIM_ExtTRGPSC_DIV2 */
 TIM_ETRClockMode1Config(TIM2, TIM_ExtTRGPSC_OFF,
 TIM_ExtTRGPolarity_NonInverted, 0x0);


TIM_SetCounter(TIM3, 0);

/*Enable the CC1 Interrupt Request */
TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE);

/* TIM enable counter */
TIM_Cmd(TIM3, ENABLE);
电是一种神奇的东西!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-14 18:25:38 | 显示全部楼层
ETR才能计数吧.CHx只能输出PWM/输入捕获.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

104

主题

313

帖子

0

精华

高级会员

Rank: 4

积分
893
金钱
893
注册时间
2014-11-13
在线时间
53 小时
发表于 2014-11-22 22:27:54 | 显示全部楼层
回复【4楼】jxa19890929:
---------------------------------
你好前辈,我正在弄定时器外部时钟计数脉冲的程序。能给我一个看一下吗。万分感谢!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 19:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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