HI3531ARM调试printf的实现

发布时间:2023-09-06  

void UART_Putc(char c)
{
    if (c == 'n')
  *(unsigned int *)(UART0_ADDR  + 0X00) =  'r';
    delay_x(0x800);
 *(unsigned int *)(UART0_ADDR  + 0X00) = c;
 
}
unsigned int val_i=0;
void UART_Print(const char *str,...)
{
    va_list unnamed_p;
    char *sval;
    unsigned int tmp=0;
    va_start( unnamed_p, str);


    while (*str)
 {
     //
     if(*str=='%')
     {
       switch(*++str)
       {
           case 'd'://输出十进制
               break;
           case 'c'://输出字符
               break;
           case 's'://输出字符串
               for(sval = va_arg(unnamed_p,char*);*sval;sval++)
               {
                   UART_Putc(*sval);
               }
               str++;
               break;
           case 'X'://输出16十进制
           case 'x'://输出16十进制
               val_i = va_arg(unnamed_p,unsigned int);
               //
               UART_Putc('0');delay_x(0X800);
               UART_Putc('x');delay_x(0X800);
               for(i=0;i<8;i++)
               {
                   delay_x(0X800);
                   tmp = val_i>>(4*(7-i));
                   val_i = val_i&(~(0xff<                   //
                   if(tmp<10)
                       UART_Putc('0'+tmp);
                   else
                       UART_Putc('A'+tmp-10);
                   //
               }
               //
               str++;
               break;
          default://输出字符
               break;
         
       }
     }
     //
  UART_Putc(*str++);
  
 }
}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

     5: recover or abort    return 0;} 调用者可能希望函数返回成功时表示完全成功,失败时程序恢复到调用前的状态(但被调函数很难保证这点)。 二、错误传递 2.1 返回值......
    的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针的定义方式为: 函数返回值......
    地址 /* 函数功能: ESP8266命令发送函数 函数返回值:0表示成功  1表示失败 */ u8 ESP8266_SendCmd(char *cmd) {     u8 i,j;     for(i=0;i......
    ;  }      /*  函数  功能:GSM模块初始化检测  函数返回值:1表示模块检测失败,0表示成功  */  u8 SIM800C_InitCheck(void......
    Linux驱动之poll机制的理解与简单使用;之前在Linux驱动之按键驱动编写(中断方式)中编写的驱动程序,如果没有按键按下。read函数是永远没有返回值的,现在想要做到即使没有按键按下,在一定时间之后也会有返回值......
    ; } 跟写字节一样,这里也引入了err判断错误,出现错误发送停止信号并退出该次读操作。因为该函数需要返回值,所以这里不能像上面那样直接return,但是出现错误,也不能让return带着一个未知的数返回......
    ) { SDCARD_CS=1;   SDCardReadWriteOneByte(0xff);//提供额外的8个时钟 } /* 函数 功 能:选择sd卡,并且等待卡准备OK 函数返回值:0,成功......
    GPIO_ReadInputDataBit 来获取位状态,该函数输入GPIO 端口及引脚号,函数返回该引脚的电平状态,高电平返回1,低电平返回0。Key_Scan 函数中以GPIO_ReadInputDataBit 的返回值......
    ms为单位, HAL MAX DELAY表示无限等待 返回值 HAL状态值:HAL_OK表示发送成功;HAL_ERROR表示参数错误;HAL_BUSY表示串口被占用; 注意事项 1. 函数......
    ; printf(“value of b: %d ”,value); while(1) { } } 还是没感觉到指针有啥用?别着急,先把基本的知识点学完哈。没有最基本的知识储备是不可以的,因为厚积而薄发! 见过返回值是指针的函数......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>