完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
嵌入式系统开发中,常常使用串口将重要的数据或者字符信息打印到PC,为系统的调试带来了很大的便利。本文简单介绍一下printf在stm32上的实现,当然也不仅限于stm32,只要把串口发送函数稍加改动就可以移植其他任何微控制器环境上。 提到printf,首先简单介绍一下可变参数的实现va函数: va_list arg_ptr; void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); 首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数的指针。然后使用va_start使arg_ptr指针指向prev_param的下一位,然后使用va_args取出从arg_ptr开始的type类型长度的数据,并返回这个数据,最后使用va_end结束可变参数的获取。 代码: #include #include "Stm32f10x_conf.h" #include "com.h" int itoa(int num, char *str, int radix) { char string[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char* ptr = str; int temp; int i; int j; if (num==0) { *ptr++ = 0x30; *ptr = 0; return 1; } if(num < 0) { *ptr++ = '-'; num *= -1; } while (num) { *ptr++ = string[num % radix]; num /= radix; if (num < radix) { *ptr++ = string[num]; *ptr = ' |