OpenEdv-开源电子网

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

外部中断模式2计脉冲数量的问题

[复制链接]

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
发表于 2013-12-22 16:28:49 | 显示全部楼层 |阅读模式

今天尝试用定时器的外部中断模式2 目的是想测一下外部输入信号的脉冲数 不知道哪里有问题 程序中测出的脉冲数要比实际的大了几个数量级。。。。各位老大帮忙看看


void TIM3_Init()
{
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

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

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

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

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

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

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

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

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

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

TIM1->CR1=1<<0;//使能计数器(启动计数器)
TIM1->CR1=0;//关闭计数器
}

主函数里用这个ClkCount读取计数值 测出来的值很大 老大给看看 我哪里有问题
ClkCount=TIM_GetCounter(TIM1);
 ClkCountTemp=ClkCount;
 TIM_SetCounter(TIM1, 0);

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-11-6
在线时间
0 小时
发表于 2013-12-22 21:56:34 | 显示全部楼层
那么多0左移等于有什么意义

------------------->一直在前进
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-22 22:01:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原大 我刚才做了好几次实验 用信号源输入 记录计数 发现计数很准确 看来是代码有问题 现在感觉是溢出没做处理 。因为这是个RFID芯片的代码 卡的线圈与天线耦合前 也会有脉冲产生 我加溢出处理试试
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-22 22:01:51 | 显示全部楼层
回复【3楼】Thsx:
---------------------------------
就是寄存器位操作
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-22 22:08:16 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
根据原大的头像有的灵感
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-22 22:59:05 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原大问你个问题 利用外部中断计脉冲数 200K的方波计不准确 差得很远 有没有问题?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-22 23:00:40 | 显示全部楼层
mcu处理不过来了吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-22 23:22:47 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
就开了两个外部中断啊 一个高频 一个低频的输入信号 低频信号两个边沿中对高频信号计数 示波器上测出来的是64-70个 用外部中断计数器测到的是最多10个
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-22 23:42:38 | 显示全部楼层
回复【11楼】老板你自己来写:
---------------------------------
精简一下中断处理函数吧
也许可以高一点,但是空间不大了.
200Khz的频率,也就是5us就要中断一次,太频繁了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-23 00:25:09 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
恩 中断函数很简单 就是一个累加计数器。
这样的话 只能使用定时器外部时钟模式计数了
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-23 09:11:08 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
原大 我想问一下 外部时钟模式2计数 怎样清理计数值  就是计一次 让它回到初始状态?必须溢出处理才能初始化吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-23 11:57:09 | 显示全部楼层
回复【14楼】老板你自己来写:
---------------------------------
记一次就清一次,这....
那你就不要用外部计数了,直接中断吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-23 14:31:11 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
原大 你用STM32编过125K的RFID芯片的驱动 就是曼彻斯特编码的解码 我做这些工作都是为了搞成这个
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-24 12:07:43 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
原大 RFID的输出是5V 接在STM32的IO口上 会不会出现什么问题。我还是那个问题 脉冲数的总是多。输入幅值3.3V的脉冲计数就很准确
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-24 13:32:02 | 显示全部楼层
回复【18楼】老板你自己来写:
---------------------------------
只要是5V兼容的IO口,没问题的.
如果不是就串接一个510R的电阻吧.
至于你说的5V脉冲不准,3.3V准,这倒是有点奇怪,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-11-6
在线时间
0 小时
发表于 2013-12-24 16:46:02 | 显示全部楼层
回复【5楼】老板你自己来写:
---------------------------------
比如这些:
TIM1->SMCR=0<<8; 
TIM1->SMCR=0<<9; 
TIM1->SMCR=0<<10; 
TIM1->SMCR=0<<11;//外部触发滤波,设为不滤波

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

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

与 TIM1->SMCR=0 没有区别吧
------------------->一直在前进
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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