OpenEdv-开源电子网

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

求助tim5->ccer &= 0<<5和tim5->ccer |= ~(1<<5)有什么区别

[复制链接]

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-15
在线时间
12 小时
发表于 2019-5-15 21:50:01 | 显示全部楼层 |阅读模式
1金钱
大哥们,我在写电容输入捕获的时候,沿上升沿捕获,需要把TIM5->CCER的第五位写0。用tim5->ccer &= 0<<5这样子跑不出来,换成tim5->ccer |= ~(1<<5)是可以的,
void capa_init(u16 arr,u16 psc)

{
//浮空输入,用于输入捕获
RCC->APB1ENR |=1<<3;//使能tim5时钟
RCC->APB2ENR |= 1<<2;
TIM5->ARR = arr;
TIM5->PSC =psc;
TIM5->CCMR1 &= 0x00ff;
TIM5->CCMR1 |= 0x0100;
// TIM5->CCMR1|=1<<8;  //CC2S=01  选择输入端 IC2 映射到 TI2 上   
// TIM5->CCMR1|=0<<12;  //IC2F=0011 配置输入滤波器 8 个定时器时钟周期滤波   
// TIM5->CCMR1|=0<<10;  //IC2PS=00  配置输入分频,不分频

TIM5->CCER |= 1<<4;
TIM5->CCER &= ~(1<<5);
// TIM5->CCER |= 0<<5;

GPIOA->CRL &= 0xffffff0f;
GPIOA->CRL |= 0x00000040;
TIM5->CR1 |= 0x01;
}


最佳答案

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

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4930
金钱
4930
注册时间
2017-7-6
在线时间
721 小时
发表于 2019-5-15 21:50:02 | 显示全部楼层
本帖最后由 程功之道 于 2019-5-17 09:27 编辑

tim5->ccer &= 0<<5  是把ccer寄存器所有的值都清0啦
tim5->ccer |= ~(1<<5) 这个是1左移5次,寄存器的第5bit为1  其他的bit位为0  那么就是00000020  再取反就是ffffffdf  然后寄存器再或啦
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-15
在线时间
12 小时
 楼主| 发表于 2019-5-15 21:50:30 | 显示全部楼层
电容触摸开关
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-5-16 00:09:08 | 显示全部楼层
tim5->ccer &= 0<<5      ==                tim5->ccer &= 0            ==      0
你从哪儿看到tim5->ccer &= 0<<5 ?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-5-16 02:11:52 | 显示全部楼层
仿真看看两种写法导致的ccer值是多少,你就知道为什么了
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-15
在线时间
12 小时
 楼主| 发表于 2019-5-17 08:53:42 | 显示全部楼层
edmund1234 发表于 2019-5-16 00:09
tim5->ccer &= 0ccer &= 0

我自己在写led实验的时候尝试出来的
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-15
在线时间
12 小时
 楼主| 发表于 2019-5-17 08:54:17 | 显示全部楼层
正点原子 发表于 2019-5-16 02:11
仿真看看两种写法导致的ccer值是多少,你就知道为什么了

好的,谢谢原子哥。我去试试看
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-15
在线时间
12 小时
 楼主| 发表于 2019-5-17 09:58:04 | 显示全部楼层
正点原子 发表于 2019-5-16 02:11
仿真看看两种写法导致的ccer值是多少,你就知道为什么了

用tim5->ccer |= ~(1<<5)是:
0x080006EE F0620220  ORN      r2,r2,#0x20

用tim5->ccer &= 0<<5是:
0x080006EE 2200      MOVS     r2,#0x00
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-15
在线时间
12 小时
 楼主| 发表于 2019-5-23 10:11:04 | 显示全部楼层

谢谢大哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 13:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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