STM32串口接收十六进制数转为十进制数(包含负数)

外部设备传输给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];
	
		}
			

	}
	

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳花开0926

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值