data为unsigned char类型,(msg->data[1]<<8) | msg->data[0]是我所需要的值,为了方便我在这里直接将msg->data强制转换成16位指针并取其值,但每当程序运行到这里都会发生硬件错误,几经周折,最终发现问题所在:非字节对齐访问内存导致硬件错误,也就是结构体成员变量存放的起始地址相对于结构体的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数,我使用的MCU是BAT32G137是M0内核的,是不支持非字节对齐访问的,M3内核是可以支持的!!!
什么是字节对齐,参考博客:https://blog.csdn.net/gaoyi221119/article/details/77989522?spm=1001.2014.3001.5506