看了一下printf的源码,想移植到stm8, 不用stdio,那个标准的东西太占flash,从linux串扣出printf
的源代码,在avr上已调通了,直接copy到stm8上用时,发现出问题了,第个参数指针或变量找的不对
在调用printf()时,传入fmt串和可变参数,运行printf根据第个参数fmt的长度,算出之后的参数。
void main(void)
{
char str[] = {"123456789"};
int i;
uartinit();
while(1)
{
i++;
myprintf("I am stm8:%s, %d\n", str, i);
}
不知道stm8有函数时是怎么入的栈。但应该包含"I am stm8:%s, %d\n"的指针, str指针和i的值吧?
但是从栈的看不是这入的,或是我没有看明白?
第一个参数是对的,包含"I am stm8:%s, %d\n"的指针 0x0084a2 共3个字节的指针
可以第二个,第三个是怎么入栈的? |