最近完stm32l4和f4系列,调试LSM303DLHC的时候,发现这段代码
- void LSM303DLHC_AccInit(uint16_t InitStruct)
- {
- uint8_t ctrl = 0x00;
-
- /* Low level init */
- COMPASSACCELERO_IO_Init();
-
- /* Write value to ACC MEMS CTRL_REG1 register */
- ctrl = (uint8_t) InitStruct;
- COMPASSACCELERO_IO_Write(ACC_I2C_ADDRESS, LSM303DLHC_CTRL_REG1_A, ctrl);
-
- /* Write value to ACC MEMS CTRL_REG4 register */
- ctrl = (uint8_t) (InitStruct << 8);
- COMPASSACCELERO_IO_Write(ACC_I2C_ADDRESS, LSM303DLHC_CTRL_REG4_A, ctrl);
- }
复制代码 在 “ctrl = (uint8_t) (InitStruct << 8);” 中InitStruct 的移位是反的。这个代码路径在
- STM32Cube\Repository\STM32Cube_FW_L4_V1.12.0\Drivers\BSP\Components\lsm303dlhc
复制代码 和
- STM32Cube\Repository\STM32Cube_FW_F4_V1.21.0\Drivers\BSP\Components\lsm303dlhc
复制代码 两个库中都出现了。
将代码改为“ctrl = (uint8_t) (InitStruct >> 8);”后,代码运行正常,可以配置LSM303DLHC。
但是………………………………………………………………………………………………
是bug?还是我理解错了??
|