2015-04-23 56 views
0

我有一些问题,阅读从程序存储器中的字符串:AVR PROGMEM读取垃圾,而不是字符串

const char str[] PROGMEM = "Test string here\r\n"; 

这里是我的打印程序:

/** Send string over UART */ 
void uart_puts(char* str) 
{ 
    while (*str) { 
     uart_tx(*str++); 
    } 
} 

/** Send progmem string over UART */ 
void uart_puts_pgm(const char* str) 
{ 
    char c; 
    while (0 != (c = pgm_read_byte(&str))) { 
     uart_tx(c); 
     str++; 
    } 
} 

正常的一个工作得很好,但progmem打印无限流0xFF。错误在哪里?

我以前和progmem一起工作过,而且它一直工作..我似乎无法在这里找到问题。

回答

0

D'哦,我不应该取消引用指针有...

pgm_read_byte(&str) 

应该只是

pgm_read_byte(str) 

它的工作现在。