完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写
|
|
|
|
联合体也是位或的逻辑操作,你可以看汇编码,真正的位操作需要编译器支持,或者直接用位带地址操作
|
|
|
|
楼主参考例程看看
|
|
|
|
#define X0_1 GPIOX->BSRR=1 #define X0_0 GPIOX->BRR=1可以这么写
|
|
|
|
不是有Bitband吗
|
|
|
|
用或 与操作就可以啊
|
|
|
|
寄存器的位数跟操作 位数没有必然关系的
|
|
|
|
BSRR BRR, 相关位只有写1才会起作用,写0无效 //GPIOx_ODR: 端口输出数据寄存器,它的31:16位保留不用,15:0对应x的相应引脚,他只能以16位方式操作。 //GPIOx_BSRR:端口位设置/复位寄存器,它的31:16位是清除位(BR15:BR0),用来复位对应的引脚;15:0位是设置位(BS15:BS0),用来设置对应的引脚。无论是BR还是BS,都是1有效,即相应位为0时无效,这样可以保证操作某个端口时对其他端口无影响。 //GPIOx_BRR:端口位复位寄存器,它的31:16位保留不用,15:0相当于GPIOx_BSRR的高16位即BR。 //事例:将GPIOB的Pin0设置位高,Pin1设置为低(要求,所有操作均对GPIOB的其他端口无影响 ) // 方法1: GPIOB->ODR|= GPIO_Pin_0; // GPIOB->ODR&=~GPIO_Pin_1; // 方法2: GPIOB->BSRR= GPIO_Pin_0; // GPIOB->BSRR= GPIO_Pin_1<<16; // 方法3: GPIOB->BSRR= GPIO_Pin_0; // GPIOB->BRR = GPIO_Pin_1; //注意:从上面可以看出采用方法二有可能将一个端口同时设置和复位,因此STM32规定,如果同时设置了BSx和BRx的对应位,BSx位起作用。 //GPIOB->ODR ^= GPIO_Pin_0; 位取反,异或方式 |
|
|
|
也真是奇葩问题了
|
|
|
|
那么简单的东西
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:46 , Processed in 0.800165 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号