in LIS2DH12_Driver.h you have These values for the "L" register, but the values correspond to the "H" register, When you increment ( reading the raw value) then you're reading X(H) with Y(L)
#define LIS2DH12_REG_OUT_X_L 0x29
#define LIS2DH12_REG_OUT_Y_L 0x2B
#define LIS2DH12_REG_OUT_Z_L 0x2D
Correct ones form the datasheet are :
#define LIS2DH12_REG_OUT_X_L 0x28
#define LIS2DH12_REG_OUT_Y_L 0x2A
#define LIS2DH12_REG_OUT_Z_L 0x2C

in LIS2DH12_Driver.h you have These values for the "L" register, but the values correspond to the "H" register, When you increment ( reading the raw value) then you're reading X(H) with Y(L)
Correct ones form the datasheet are :