外部设备传输给STM32单片机十六进制数
例如0x09c4 代表2500
0xff38 代表-200(并不是65336,因为这是有符号的)
串口接收处理函数
//接收到 5A A5 06 83 55 00 01 09 C4 代表2500
//接收到 5A A5 06 83 55 00 01 FF 38 代表-200
if(USART_RX_BUF[0]==0X5A&&USART_RX_BUF[1]==0XA5&&USART_RX_BUF[2]==0X06&&USART_RX_BUF[3]==0X83&&USART_RX_BUF[4]==0X55&&USART_RX_BUF[5]==0X00&&USART_RX_BUF[6]==0X01)
{
// DAC1
if((USART_RX_BUF[7]&0x80)==0x80)//负数
{
DAC1=USART_RX_BUF[7];
DAC1=DAC1<<8;
DAC1+=USART_RX_BUF[8];
DAC1-=1;
DAC1=~DAC1;
DAC1=0-DAC1;
// 三、逆向操作将二进制的负数转为十进制。
//1、将二进制数减1,得到:11101100。
//2、将减1后的代码取反操作,得到:00010011。
//3、将取反后的代码换算成十进制,得到19。‘
//4、在计算结果19的基础上要加上-号,结果为-19.
}
else//正数
{
DAC1=USART_RX_BUF[7]*256;
DAC1+=USART_RX_BUF[8];
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)