OpenEdv-开源电子网

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

关于TIM1的脉冲计数,原子哥求救!

[复制链接]

9

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2013-3-16
在线时间
0 小时
发表于 2013-3-29 04:35:57 | 显示全部楼层 |阅读模式
我想写一个计算脉冲个数的函数,看手册看了老半天,无奈脑子不好使,我在您的例程中的串口程序中增加了
void jishu(void)
{
  RCC->APB2ENR|=1<<2;//使能 PORTA 时钟
  GPIOA->CRH&=0XFFF0FFFF;  //PA12 浮空输入
  GPIOA->CRH|=0X00040000;

   RCC->APB2ENR|=1<<11;//TIM1时钟使能  
TIM1->SMCR|=1<<14;//使能外部时钟模式2,计数器由ETRF信号上的任意有效边沿驱动。
TIM1->SMCR|=1<<12; //ETRP频率除以2; 
TIM1->SMCR|=0<<15;   //0:ETR不反相,高电平或上升沿有效;
TIM1->CR1|=1<<0;//使能计数器

}
这个函数,然后用串口发回数据  Count=TIM1->CNT; 但是数值一直为0,我已经有方波输进PA12了,不知道错在哪里,请原子哥指教,或者给我一个参考例程,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
发表于 2013-3-29 09:11:10 | 显示全部楼层
哎哟,我也是在弄这个。一样的结果,数值一直0,求解中!我表示高度关注此贴。。
有进步就好!
回复 支持 反对

使用道具 举报

9

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-3-29 11:12:13 | 显示全部楼层
回复【2楼】caoyicheng626:
---------------------------------搞了很久了
回复 支持 反对

使用道具 举报

9

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-3-29 11:15:52 | 显示全部楼层
懂得各位解答一下我们的疑问
回复 支持 反对

使用道具 举报

9

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-3-29 18:19:33 | 显示全部楼层
无人解答
回复 支持 反对

使用道具 举报

10

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2012-12-27
在线时间
0 小时
发表于 2013-3-29 19:35:33 | 显示全部楼层
同求啊,想用TImer1输出2M的方波,然后用定时器记录输出了多少个高电平,定时器改用什么模式
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
发表于 2013-3-29 20:54:13 | 显示全部楼层
继续顶贴!等高手指点!
有进步就好!
回复 支持 反对

使用道具 举报

10

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-11-24
在线时间
0 小时
发表于 2013-3-29 23:25:21 | 显示全部楼层
回复【楼主位】国华:
---------------------------------
今天刚试的先设置口TIM2_CH1_ ETR 
GPIOA->CRL&=0XFFFFFFF0;//PA0 TM2_CH1
GPIOA->CRL|=0X00000008;
GPIOA->ODR|=0<<0;
然后你要使能更新中断 TIM2->DIER |= 1<<0;防止他计数溢出了
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
发表于 2013-3-30 01:58:16 | 显示全部楼层
搞了好久,终于不是打印0了,脉冲数起来了。
用外部时钟模式2+触发模式(参考手册上277页有讲解)
虽然在数脉冲,但还有很多地方没搞透,数的对不对还不清楚。还需加溢出中断,慢慢完善。
大体思路就是当PA6(TI1)来一个上升沿时,计数器开始在ETR的上升沿计数,TIM3的ETR是PD2
stm32确实博大精深!发现自己到现在 皮毛都还不算。
………
……
void TIM3_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能PA端口时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能TIM3时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//不重映射时,PA6是被测脉冲触发输入,也就当PA6来一个上升沿时,计数器开始在ETR的上升沿计数,TIM3的ETR是PD2
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//50MHz时钟速度
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA,&GPIO_InitStructure);//根据上面指定参数初始化GPIO结构体

//Config D2 为浮空输入,被数的脉冲从此脚输入 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
GPIO_Init(GPIOD, &GPIO_InitStructure);

TIM3->SMCR=0<<8;
TIM3->SMCR=0<<9;
TIM3->SMCR=0<<10;
TIM3->SMCR=0<<11;//外部触发滤波,设为不滤波

TIM3->SMCR=0<<12;
TIM3->SMCR=0<<13;//外部触发预分频,设置为不分频

TIM3->SMCR=0<<15;//外部触发极性设为高电平或上升沿有效

TIM3->SMCR=1<<14;//使能外部时钟模式2,计数器有ETRF信号上的任意有效边沿驱动

TIM3->CCMR1=0<<4;
TIM3->CCMR1=0<<5;
TIM3->CCMR1=0<<6;
TIM3->CCMR1=0<<7; //IC1F=0000,没有滤波

TIM3->CCMR1=0<<1;
TIM3->CCMR1=1<<0; //CC1S=01,CC1通道被配置为输入,IC1映射在TI1上

TIM3->CCER=0<<1; //CC1P=0确定极性(只检测上升沿)

TIM3->SMCR=1<<2;
TIM3->SMCR=1<<1;
TIM3->SMCR=0<<0;  //SMS=110,配置定时器为触发模式

TIM3->SMCR=1<<6;
TIM3->SMCR=0<<5;
TIM3->SMCR=1<<4;//TS=101,选择TI1作为输入源

TIM3->CR1=1<<0;//使能计数器(启动计数器),该段寄存器操作代码是参照中文参考手册P277敲的
}
……
int main(void)
{
      SystemInit();
      TIM3_Config();
      UART1_Init();
      while(1)
      {
                printf("ulse Count:%d \r\n",TIM_GetCounter(TIM3));//[把计数值打印出来]
      }
}
有进步就好!
回复 支持 反对

使用道具 举报

19

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2011-3-23
在线时间
5 小时
发表于 2013-5-16 12:23:20 | 显示全部楼层
回复【9楼】caoyicheng626:
---------------------------------
F4里面应该也可以实现吧,我怎么就不成功呢
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
发表于 2013-5-17 15:30:09 | 显示全部楼层
回复【10楼】苹果:
F4里面应该也可以实现吧,我怎么就不成功呢
---------------------------------
   F4是什么?
有进步就好!
回复 支持 反对

使用道具 举报

19

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2011-3-23
在线时间
5 小时
发表于 2013-5-20 09:56:24 | 显示全部楼层
回复【11楼】caoyicheng626:
---------------------------------
就是stm32F4 我把你这个代码搬进去不行啊
回复 支持 反对

使用道具 举报

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
发表于 2015-8-12 16:10:08 | 显示全部楼层
回复【12楼】苹果:
---------------------------------
芯片都不一样肯定不对了,调整下IO口
有深圳的大牛带我飞吗?
回复 支持 反对

使用道具 举报

11

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-7-6
在线时间
5 小时
发表于 2015-8-18 14:57:57 | 显示全部楼层
mark!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 07:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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