@xuedongyang
Thank you for your reply,
According to what I have found on that fixed16_t: its highest bit is the sign bit, and the remaining 15 bits are data .The data values from MSB to LSB are 2^(-1) to 2^(-15), for example, 0x4000 represents 2^(-1) and 0xC000 represents -2^(-1).
This seems to match the fractional q15_t data type on the ARM CMSIS DSP library. however with my project compiled on ARM GCC I have not found this problem during variable assignation.

I am in the general purpose MCU area, unfortunately , I do not have the hardware and SW libraries to test on my own. I would recommend check for any examples within your BSP drivers where this fixed16_t is implemented and test the assignation using different values than 0x1357, for example 0.5 and -0.5 . It could be that the 7FFF, you are seeing represents an overflow to the data type. Check that the sign bit can be set.
Please accept my apologies for the delay and the inconvenience.
Diego.