OpenEdv-开源电子网

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

输入捕获实验void TIM5_Cap_Init(u16 arr,u16 psc)问题

[复制链接]

7

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-11-27
在线时间
0 小时
发表于 2014-5-26 16:04:12 | 显示全部楼层 |阅读模式
5金钱
void TIM5_Cap_Init(u16 arr,u16 psc)
{  
RCC->APB1ENR|=1<<3; 

RCC->APB2ENR|=1<<2;   
GPIOA->CRL&=0XFFFFFFF0; 
GPIOA->CRL|=0X00000008; 
GPIOA->ODR|=0<<0; 
 
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的组合能改变寄存器的值吗?TIM5->CCMR1|=0<<4;计算结果不是应该维持原值吗?怎么能使IC1F变为0000啊。另一方面,TIM5->CCMR1|=0<<10;这条语句为什么给IC2PSC赋值呢,不是应该给IC1PSC赋值嘛。求指导

最佳答案

查看完整内容[请看2#楼]

|=0仅仅起提示作用而已,告诉你第几位是代表什么意思,实际上,这类语句是可以去掉的,但是你看代码来说,当然希望越详细越好了。 至于IC2PSC,完全是备注失误,是个错误的备注而已,一切以代码为准。 有时候备注不一定准确。。。(代码经常改来改去,注释难免忘了改了。。。)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-26 16:04:13 | 显示全部楼层
|=0仅仅起提示作用而已,告诉你第几位是代表什么意思,实际上,这类语句是可以去掉的,但是你看代码来说,当然希望越详细越好了。
至于IC2PSC,完全是备注失误,是个错误的备注而已,一切以代码为准。
有时候备注不一定准确。。。(代码经常改来改去,注释难免忘了改了。。。)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-11-27
在线时间
0 小时
 楼主| 发表于 2014-5-26 16:04:13 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我试了下,去掉确实是可以的。但是我还有有点不理解,就比如TIM5->CCMR1|=0<<10;这条语句要告诉我的是什么意思啊,书中前文说到要对这些位进行设置,现在这里等于没设置,难道不设置的位默认等于0?还有这条语句0<<10就是代表了IC2PSC,如果是0<<2应该就是代表了IC1PSC吧。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-27 23:40:42 | 显示全部楼层
回复【3楼】上善若水19900927:
---------------------------------
这就看寄存器手册,翻翻就知道什么意思了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-11-27
在线时间
0 小时
 楼主| 发表于 2014-5-28 13:07:27 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
寄存器手册里没有提供默认值是多少啊。您的那本书前面说到要对这些位进行设置,这里为什么不需要设置呢。还有上面的第二个问题TIM5->CCMR1|=0<<10;这条语句0<<10就是代表了IC2PSC,如果是0<<2应该就是代表了IC1PSC吧。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-28 23:21:48 | 显示全部楼层
回复【5楼】上善若水19900927:
---------------------------------
有默认值的,你好好看看.
默认一般都是0,而且都有写的!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-8-19 19:43:14 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,那请问如果把TIM5->CCER|=0<<1;这句话中的或等于变成与等于,是不是也是对的呀?
回复

使用道具 举报

7

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-8-19 21:06:25 | 显示全部楼层
回复【6楼】正点原子:
-----------------------------
原子哥还有一个问题,TIMx_CCMR1,TIMx_CCMR2这两个寄存器总共能控制4个通道。但是定时器TIM1和TIM8有7个通道,怎么控制?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-19 22:53:24 | 显示全部楼层
回复【8楼】beiker:
---------------------------------
也就4个通道,剩下的3个是取反的...
也就是1,和非1
2,和非2
3,和非3.
他们总是对称的(不考虑死区设置时.)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-8-20 15:18:18 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
了解了,谢谢!
回复

使用道具 举报

11

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2015-7-30
在线时间
50 小时
发表于 2015-9-24 18:09:49 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我想问一下,溢出次数为什么乘以65536?转化为10进制吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-24 22:02:35 | 显示全部楼层
回复【11楼】小鑫好菜:
---------------------------------
因为是16位计数器。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
发表于 2016-3-7 21:52:43 | 显示全部楼层
上善若水19900927 发表于 2014-5-28 13:07
回复【4楼】正点原子:
---------------------------------
寄存器手册里没有提供默认值是多少啊。您的那本 ...

同问第二个问题。。。。。。。。。
回复

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
发表于 2016-3-7 21:54:05 | 显示全部楼层
上善若水19900927 发表于 2014-5-28 13:07
回复【4楼】正点原子:
---------------------------------
寄存器手册里没有提供默认值是多少啊。您的那本 ...

0<<10不是设置的通道二吗?
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-7-18
在线时间
7 小时
发表于 2018-7-24 19:06:41 | 显示全部楼层
/同时通过设置 TIM5_Cap_Init(0XFFFFFFFF,90-1),将 TIM5_CH1 的捕获计数器设计为 1us 计数一次。这句话怎么理解的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 17:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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