求求求!!!
我使用mega16芯片通过重写putchar函数来实现printf函数,proteus仿真与虚拟串口仿真都可以读到数据,但与单片机链接无法读取数据,已排除硬件电路问题,因为我用之前单个字符发送的程序,可以正常读取。
/ 串口发送部分void USART_Init(void){ UCSRB=0x00; //禁止发送器和接收器,禁止串口中断 UCSRA=0b00100000; //各标志位清零,双机通信模式,无加速波特率 UBRRH = 0x00; UBRRL = 0x4D; // 设置波特率(12MHz 9600) UCSRB = 0x98; // 使能串口发送 UCSRC = 0b10000110; //异步模式,无奇偶校验,1位停止位,8位数据位 //fdevopen(putchar, NULL); }void USART_Send(char dat) {while (!(UCSRA & (1 << UDRE)));// 等待发送缓冲器为空 delay(1);UDR = dat; // 将数据写入发送缓冲区} // 重写putchar以实现printf int putchar(char c) { USART_Send(c); return c; }