OpenEdv-开源电子网

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

STM32的输入捕获实验 有点程序问题想问一下。

[复制链接]

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
发表于 2013-6-25 22:08:17 | 显示全部楼层 |阅读模式
void TIM5_Cap_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->CCMR1|=0<<10; //IC2PS=00 配置输入分频,不分频 

TIM5->CCER|=0<<1; //CC1P=0 上升沿捕获
TIM5->CCER|=1<<0; //CC1E=1 允许捕获计数器的值到捕获寄存器中

TIM5->DIER|=1<<1;   //允许捕获中断
TIM5->DIER|=1<<0;   //允许更新中断
TIM5->CR1|=0x01;     //使能定时器2
MY_NVIC_Init(2,0,TIM5_IRQChannel,2);//抢占2,子优先级0,组2   
}
这个程序上面的
TIM5->CCMR1|=0<<4;  //IC1F=0000 配置输入滤波器 不滤波
 TIM5->CCMR1|=0<<10;  //IC2PS=00  配置输入分频,不分频 
这两句不是很明吧希望能帮我指点一下
这里使用的是 定时器5通道1输入捕获配置 我是看原子哥的程序来写的
为什么
定时器5通道1输入捕获 写成了 TIM5->CCMR1|=0<<10; 而写到了IC2PS这个位去了啊
 应该是TIM5->CCMR1&=0FFF3这样才是//IC1PS=00  配置输入分频,不分频 啊 为啥要  TIM5->CCMR1|=0<<10;  这样写呢
还有这句TIM5->CCMR1|=0<<4;  //IC1F=0000 配置输入滤波器 不滤波
这里TIM5->CCMR1|=0<<4; 写成这样可以吗TIM5->CCMR1&=0XFF0F;这样写对吗? 希望 原子哥能帮我解答
最终我板这两句改成这样
 TIM5->CCMR1&=0XFF0F ; //IC1F=0000 配置输入滤波器 不滤波
  TIM5->CCMR1&=0XFFF3; //IC1PS=00 配置输入分频,不分频 
改成这样可以吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2013-6-25 22:31:42 | 显示全部楼层
本人也在本论坛提出过相同的问题,但是没有人认真回答给出明确答案!1,“TIM5->CCMR1&=0XFF0F”这种写法不严谨,因为你把别的位都定义了。
2,TIM5->CCMR1|=0<<10,为什么这样写至今我也不解!但是通过实验,写成TIM5->CCMR1|=0<<2也是可以的,不影响程序效果!
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2013-6-25 22:34:41 | 显示全部楼层
其实学习最主要还是靠自己多思考,自己去想办法解决。诚心乐意助人的人不多。我遇到问题一般上百度,或找别的视频
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-6-25 22:41:05 | 显示全部楼层
真诚的洗碗有人能帮我解决这个问题啊???
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2013-6-25 22:44:43 | 显示全部楼层
行不行,上机试试就知道了。不要迷信所谓的专家,专家也会有迷糊的时候。
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-6-25 23:03:43 | 显示全部楼层
我改成我这样写 捕获的数值很稳定这是我改后捕获的串口收到的



但是我用小马哥的程序采集到的是下面这样不是很稳定啊?















回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-6-25 23:04:59 | 显示全部楼层


??????????????????????????
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2013-6-26 00:00:18 | 显示全部楼层
这肯定不对!捕获值不可能一样!
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-7-30
在线时间
0 小时
发表于 2013-8-25 15:46:29 | 显示全部楼层
回复【2楼】wangyan915205:
---------------------------------
那如果写成TIM5->CCMR1&=0XFFDF可不可以啊?这样就不会影响到其他位了。或等于0感觉没什么意义啊。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-25 22:24:13 | 显示全部楼层
回复【楼主位】MDC012170:
---------------------------------
1,这个问题我提过很多次吧?CCMR1默认就是0,|=0,这里其实就是起个提示作用,告诉你第10位是什么作用,其实你可以不这么写,写成:TIM5->CCMR1&=~(1<<10); 既有提示作用,又有实际效用。但是要改为设置1的时候,那就会比较麻烦,你得去掉两个括号,去掉~,把&改为|,等3个步骤。如果用我们例程的,你直接将0改为1,就是了。
这个0<<10确实是改IC2去了,应该是0<<2才是。

2,TIM5->CCMR1|=0<<4; 写成这样可以吗TIM5->CCMR1&=0XFF0F;这样写对吗? 可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-8-27 10:46:32 | 显示全部楼层
现在明白了谢谢原子哥的耐心回答!
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2012-10-11
在线时间
15 小时
 楼主| 发表于 2013-8-27 10:49:44 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
对了原子哥你说最后的综合实验的补充章节你说有详细的讲解 我找你发给我们的光盘了没看到有啊!论坛里有最后综合实验的详细讲解的PDF文档没?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2016-3-3
在线时间
36 小时
发表于 2016-5-24 20:50:07 | 显示全部楼层
正点原子 发表于 2013-8-25 22:24
回复【楼主位】MDC012170:
---------------------------------
1,这个问题我提过很多次吧?CCMR1默认就是0 ...

听君一席话,省我十年书,白天在公司看到这一块,百思不得其姐。回来又翻视频看到现在,终于有正解了,正好,接着学习别的了
/////////////////////////////////////////////////////////////
我有时有些毛病真要改改了,觉得不对,可以改下源程序在板子上试试就知道,四处翻答案不如自已验证
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 21:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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