单片机串口小问题,我想要输出汉字,所以把汉字分为了高十六位和第十六位,但问题是为什么unsigned无符号还可以是-27,而且输出的数据压根对不上原来的汉字
因为你用的是%d,输出就按有符号数解释,同一个内存值,按有符号解释是负数,按无符号解释是正数,这是很正常的情况。
你想输出为无符号,应该用%ud,后面的强制类型转换都没必要做。
而且你的格式化输出是以整数方式输出,而不是字符方式,自然不可能得到你期望的输出。
而且从你的代码看,你似乎对汉字的编码还存在误解,你代码里的a[0]只是“宇”的第一个内码,只是一个char类型的值,char可不存在什么高16位低16位。
要用%s打印输出字符串的形式打印,不能用%d
1.使用多个中断时需要注意优先级,优先级不对会导致部分功能无法实现
2.在B终端接收数据的时候,用PA10的EXTI中断,A中断用定时器查询
3.在相同部分代码复制时,注意修改不一样的地方