历史上的今天
今天是:2024年09月01日(星期日)
2018年09月01日 | stm32发送16进制的数组总结
2018-09-01 来源:eefocus
关于STM32如何串口输出16进制的数值,然后在串口调试助手上显示,很多人是用printf(“%02x”,A)语句,但是在串口调试助手上显示的是ACSII码,不是我们要的HEX数据,在这里我们用另外一种方法来在这件事情。
直接用寄存器来做,下面看代码:
USART_SendData(USART1,0x00) ;
USART_SendData(USART1,0x01) ;
USART_SendData(USART1,0x02) ; 这样通过上位机收到的只是02并不是00 01 02
因为数据还来不及发送,数据就被后面来的数据覆盖了,所以收到的数据是02,不是00 01 02
USART_SendData(USART1,0x00) ;
delay_ms(1);
USART_SendData(USART1,0x01) ;
delay_ms(1);
USART_SendData(USART1,0x02) ;
delay_ms(1); 这样收到的才是00 01 02
在这里,功能是实现了,但是延时其实是一个不是很好的方法,需要系统在等待,浪费太多的时间。下面的方法是我后来改良的方法。原理就是等待发送完后继续发送下一个数据,没有过多的等待。方法是来自论坛的,http://www.openedv.com/posts/list/24107.htm
void UartASendStr (u8 *pucStr, u8 ulNum)
{
u8 i;
for(i = 0;i { while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); USART_SendData(USART1,*pucStr++); } } void ACK(u8 func) { u8 data[5]; data[0]=0x0c; data[1]=0xAA; data[2]=0x00; data[3]=0xFF; data[4]=0x0F; UartASendStr(data,5); } 上面这个代码发送完后可以在串口的调试助手上hex格式显示。
上一篇:STM32 串口通讯 发送 接收
史海拾趣
|
目录 第1章概述. 1.1显示概念 1.2显示技术的变革与广泛用途 1.3显示系统的基本性能 1.4显示设备的基本功能与显示方法 1.5作为人机界面的显示器的分类 &nb ...… 查看全部问答> |
|
运气比较差,刚一溜出公司,老总电话就来了,问我在公司否?我只能老实说,不在公司,有事出去了。按照公司规定,扣钱了,有啥好招,对付公司呀,请大侠出招… 查看全部问答> |
|
不带操作系统的万年历源程序 附带智能闹钟的功能 使用1602显示的人机界面 使用时 每一个操作步骤都有提示 唯一不足的是 该项目不能自动刷新星期 复 位时需要连同日期一起设置 该压缩包内含有LCD1602的驱动库 LM3S8962的 宏定 ...… 查看全部问答> |
|
请问我的2407rebuild all之后能显示出: warning: entry point symbol _c_int0 undefined Build Complete, 0 Errors, 1 Warnings, 0 Remarks. 请问\\" _c_int0 “是什么文件呀? 谢谢… 查看全部问答> |
|
能不能够把数据发送安排在一个任务中,当需要向上位机发送数据时,就先关中断,在发送完成后再开中断。即发送数据过程相当于一段临界代码。我用的是LM3S1138… 查看全部问答> |




