OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2987|回复: 3

sprintf函数如何输出多个十六进制数

[复制链接]

3

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-7-30
在线时间
27 小时
发表于 2019-8-13 17:33:46 | 显示全部楼层 |阅读模式
5金钱
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usbd_hid_core.h"
#include "usbd_usr.h"
#include "usbd_desc.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "stdio.h"
#include "key.h"


#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
  #if defined ( __ICCARM__ ) /*!< IAR Compiler */
    #pragma data_alignment = 4   
  #endif
#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */
__ALIGN_BEGIN USB_OTG_CORE_HANDLE  USB_OTG_dev __ALIGN_END;


uint8_t Buffer[65];
uint8_t MyBuffer[65]={1,2};


int main(void)
{
        u16 i,j,key;
        u16 FirstCommand,SecondCommand,ThirdCommand;
        u16 Length;
        char a[250];

       
                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
                delay_init(168);     //初始化延时函数
                uart_init(115200);         //初始化串口波特率为115200
                LED_Init();                                         //初始化LED  
                LCD_Init();                                         //LCD初始化  
                KEY_Init();                                         //按键初始化  
                //配置USB HID
                USBD_Init(&USB_OTG_dev,
                                                        USB_OTG_FS_CORE_ID,
                                                        &USR_desc,
                                                        &USBD_HID_cb,
                                                        &USR_cb);
                delay_ms(10);
               
                POINT_COLOR=RED;
                while(1)
                {
                                DCD_EP_PrepareRx(&USB_OTG_dev,HID_OUT_EP,Buffer,64);//准备接收数据  PC端发送指令连续且小于64位
                                if(UsbHidReceiveComplete==1)
                                {
                                        UsbHidReceiveComplete=0;
                                        //USBD_HID_SendReport (&USB_OTG_dev, Buffer, 64);       
                                        Length=sizeof(Buffer);
                                        for(i=0;i<Length;i++)
                                        {
                                                 MyBuffer[i]=Buffer[i];
                                                 j=i;//第一个空白字符位置
                                                 if (Buffer[i]==' ')
                             break;
                                                                                                                                                   
                                        }
                                       
                                                        sprintf(a,"%#X",(uint8_t)Buffer[0]);
                                        LCD_ShowString(30,70,240,16,16,(u8*)a);
                                          if(Buffer !=MyBuffer)
                                                  LCD_Fill(30,70,240,210+16,WHITE);
                                          LCD_ShowString(30,70,240,16,16,(u8*)a);
                                          if((Buffer[0]=='S')&(Buffer[1]=='S')&(Buffer[j-1]=='P')&(Buffer[j-2]=='P')&(j>=6))
                                        {
                                                 if (j>=6)
                                                    FirstCommand=(Buffer[2]-0x30)*10+(Buffer[3]-0x30);
                                                 if (j>=8)
                                                          SecondCommand=(Buffer[4]-0x30)*10+(Buffer[5]-0x30);
                                                 if (j>=10)       
                                                          ThirdCommand=(Buffer[6]-0x30)*10+(Buffer[7]-0x30);
                                           switch(FirstCommand)
                                                 {
                                                         case 1ED0=0;USBD_HID_SendReport (&USB_OTG_dev,"Led0 is on!\r", 64);
                                                                if (SecondCommand==1)
                                                                                        { LED1=0;USBD_HID_SendReport (&USB_OTG_dev,"Led1 is on!\r\n", 64);}
                                                                                        if (SecondCommand==2)
                                                                                        {LED1=1;USBD_HID_SendReport (&USB_OTG_dev,"Led1 is off!\r\n", 64);}
                                                                                        break;       
                                                   case 2ED0=1;USBD_HID_SendReport (&USB_OTG_dev,"Led0 is off!\r", 64);
                                                                                        if (SecondCommand==1)
                                                                                          {LED1=0;USBD_HID_SendReport (&USB_OTG_dev,"Led1 is on!\r\n", 64);}
                                                                                        if (SecondCommand==2)
                                                                                          {LED1=1;USBD_HID_SendReport (&USB_OTG_dev,"Led1 is off!\r\n", 64);}               
                                                                                        break;
                                                   default:USBD_HID_SendReport (&USB_OTG_dev,"Command is out range!\r\n", 64);break;
                                                 }                                       
                                       
                                        }
                                        else
                                                USBD_HID_SendReport (&USB_OTG_dev,"Command is out range!\r\n", 64);                                                                                       
                                }
                       
                        key=KEY_Scan(0);
                    if(key)
                                {
                                 switch(key)
                                 {
                                   case KEY0_PRES:USBD_HID_SendReport (&USB_OTG_dev,"KEY0 is press!\r\n", 64);;break;
                                   case KEY1_PRES:USBD_HID_SendReport (&USB_OTG_dev,"KEY1 is press!\r\n", 64);;break;
                                   case KEY2_PRES:USBD_HID_SendReport (&USB_OTG_dev,"KEY2 is press!\r\n", 64);;break;
                                   case WKUP_PRES:USBD_HID_SendReport (&USB_OTG_dev,"WKUP is press!\r\n", 64);;break;
                                 }                               
                                }
                               
                                delay_us(1000);                               
   }

}







/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
以上为代码,现在给STM32发送数据时,屏幕上只能显示第一组数的十六进制,我想要显示多组的,应该如何修改,希望各位大神指教~

最佳答案

查看完整内容[请看2#楼]

百度学习。。。这种基本上是不能再简单的问题了,自己动动手,找找吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-8-13 17:33:47 | 显示全部楼层
百度学习。。。这种基本上是不能再简单的问题了,自己动动手,找找吧
回复

使用道具 举报

3

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-7-30
在线时间
27 小时
 楼主| 发表于 2019-8-14 10:50:02 | 显示全部楼层
正点原子 发表于 2019-8-13 17:33
百度学习。。。这种基本上是不能再简单的问题了,自己动动手,找找吧

-.- 百度了好久了,我试着加了循环但还是不行 大神帮忙指一个方向让我去找找
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-3-10
在线时间
12 小时
发表于 2019-8-15 11:41:30 | 显示全部楼层
本帖最后由 dragon98141 于 2019-8-16 09:07 编辑

百度sprintf格式化输出。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 05:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表