历史上的今天
今天是:2025年02月28日(星期五)
2020年02月28日 | 单片机系统重写printf函数
2020-02-28 来源:eefocus
//将stdio.h头文件中的printf函数注释掉不然会冲突
//stdio.h头文件还是要包含的里面有va_list的定义
//使用vsprintf将要打印的数据赋给字符串
//使用字符串发送函数发送字符串
//不要把这个数组放在printf函数里面,一方面会在栈分配内存上耗费时间
//另一方面也是最主要的如果栈空间不够了还要分配100个字节那就会导致
//堆栈溢出,CC2530使用256字节的IDATA的一部分作为栈空间,我设置成了0xC0
//也就是192字节,在函数调用层次很深的时候在调用printf函数就会很容易
//导致堆栈溢出,出现莫名其妙的问题。
char string[100];
void printf(char *fmt,...)
{
va_list ap; //typedef char *va_list; va_list是char型的指针
va_start(ap,fmt); //这个函数的功能是,找到第一个可变形参的地址,并把地址赋给ap
vsprintf(string,fmt,ap); //其实这个函数才是核心函数,没研究。。。
UartSendString(string); //这个函数就是发送字符串函数,通过上一个函数,就把该提取的东西都提取了
va_end(ap); //结束函数
}
其实使用sprintf函数就可以实现printf功能了,例如:
sprintf(string,fmt,...);
UartSendString(string);
史海拾趣
|
电源模块N+k工作方式对电源系统可靠性的影响 影响高频开关电源系统可靠性的因素主要有电源模块的可靠性,高频开关电源模块的热备份数量对可靠性的改善等。由于电源系统的交直流配电使用的元、器件较少,分析时可认为其可靠度RP(t)=1。 1高频开 ...… 查看全部问答> |
|
哥们今天刚按照实物反推出的,主芯片为DM9081的5口以太网交换机原理图.PROTEL99SE格式. [ 本帖最后由 西门 于 2009-5-12 18:31 编辑 ]… 查看全部问答> |
|
gy8u一上来就希望:大家多交流技术的话题, 非常欢迎gy8u版主,非常欢迎大家讨论:比如数据采集…… gy8u版主其人:主要做的工作是做汽车电子的测试,以及整车的测试……… 查看全部问答> |
|
Platform Builder 4.2中自带的S3C2410BSP可以用于S3C2440么? Platform Builder 4.2中自带的S3C2410 BSP可以用于S3C2440么? 或者哪里有下载用于S3C2440 BSP for PB4.2的?… 查看全部问答> |
|
晶振频率11.0592MHZ 源程序如下: 问题是 利用串口调试软件运行时,反复输入U后经采样转换数据不一致,即模拟信号转成数字量的值 跳变太大。。。请教专家!!! CS BIT P1.1 &n ...… 查看全部问答> |
|
STM32具有12BIT ADC 确实很好,很强大!但也担心它的精度问题,听闻有3BIT线形误差。下面是AT91SAM7S64关于ADC误差的说明。… 查看全部问答> |
|
中断是MSP430微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。 MS430 的中断比较多,几乎每个外围模块都能够产生中断。MSP430 可以在没有事件发生时进入低功耗状态,事件发生时,通过中断唤醒CPU ,事件处理完毕后,CPU 再次进 ...… 查看全部问答> |
|
大家好: 我用 AD633 乘法器做了一个模拟鉴相电路,将 X 和 Y 两个正弦波相乘,OUT 端得到那下面个视波器波形,输出大多在 0V 以下,由于电压刻度每格是 500mV,所以大约是-1.5Vp-p,但我现在碰到一个问题就是不知道要如何将此信号透过低通滤 ...… 查看全部问答> |
|
初触STM32,一堆的寄存器可谓是头大,今天闲得蛋疼,理了下RCC寄存器组,共10个寄存器,虽然没有记下来,但是基本知道该寄存器组的作用。这里也没具体列出哪个寄存器的某一位是啥作用,但是一眼看去基本知道这个寄存器是可以设置哪些项的,这样也能 ...… 查看全部问答> |




