STSPIN32G4 STM32G431VBTx CAN FIFO发送数据帧随机变远程帧
STM32G473,PA3导致定时器定时误差过大
请问 使用MC SDK6.4版本,芯片选的时STM32G431CBUx系列,再配置电流采样时候,选择片内运放,外部增益网络,为啥会报错呀
求simulink开发STM32的支持包离线版本
stm32 can偶现导致其他设备发送数据异常
MCSDK6.4开环能转,速度环一动不动
用mcsdk6.4工具使用ElectronicSpeedControl_ESC-G4生成的代码编译没错误但是开机就卡死怎么解决?
FDCAN复用在了BOOT0上了,会不会有影响
CUBEMX配置G474串口DMA传输,为什么接收正常发送不了?
有没有人搞过单极倍频的SPWM
微信公众号
手机版
[md]位或操作,用于对特定位置1,保留其它位,二者结合做为最终结果;
直接赋值,新值直接替换寄存器原内容。
其实 两种写法目的也不太一样,自然期待的结果也可能不同。
我查看了手册关于该寄存器的描述,是个可读写的寄存器。
不管你是基于位操作还是直接写 都是接受的,但是不同操作或手段,目的是不一样的,结果也可能不一样。
比方 你这样写 SPI3->CR2 |= 0x3 << 8;实际上是将寄存器原来的初始值跟(0x3 << 8)相或后的值存放到寄存器;显然,这种情况下的结果跟原来的值强关联的。具体到这里,只有bit8 bit9被替换为B11了。
现在DS段共4位,当你执行这个操作后,最后DS的值可能是3,7或F呢。除非你在执行这个操作前先对DS段清零。
反过来,如果你这样写,SPI3->CR2 = 0x0300;就是用0x0300直接覆盖寄存器原来的内容,强行替换,以前是什么值根本不关心。具体到这里,你这样操作后,DS段内容肯定是3.推荐使用cube库,这样很多细节都避免了。
使用cube对比过,单步调试对比了也,寄存器状态都是一样的。cube可以正确改写CR2的DR位,但是寄存器直接写入就不行
SPI3->CR2|=0x3<<8; //失败
SPI3->CR2=0x0300; //成功
这是为啥?😄
不支持位操作?