1、开发环境
开发平台:ICCAVR 7.22
AVR单片机型号:ATMEGA64
仿真平台:protues7
模拟串口软件:Launch Virtual Serial Port Driver Pro
2、程序编写
要想在AVR单片机中使用printf函数,首先得包含头文件<stdio.h>,其次,得在函数中定义putchar(char c)函数,而定义putchar函数其实在ICCAVR的安装目录里已经给出了示例,找到安装目录后,进入examples.avr文件夹内即可看见相对应的.c文件了,如下图:
首先在此文件夹中找到对应的芯片的putchar的.c文件,然后就可以进行相对应的移植了,如果没有相对应的.c文件,则移植purchar_basic.c就可以了。如下为我的实现的putchar函数
extern int _textmode;
int putchar(char c)
{
if (_textmode && c == '\n')
putchar('\r');
while (!getbit(UCSR0A,UDRE0));
UDR0 = c;
return c;
}
将此移植好后,就可以使用printf函数了。
3、验证
在主循环中每秒发送一次hello world验证是否能够正常使用,如下:
int main()
{
setbit(DDRC,DDC3);
DDRD = 0XFF;
Uart_init(9600);
Exti_Init();
while(1)
{
printf("hello world\r\n");
Delay_Ms(1000);
}
return 0;
}
测试效果如下: