AVR PROGMEM读取垃圾而不是字符串

时间:2015-04-23 19:08:50

标签: c gcc arduino avr avr-gcc

从程序存储器读取字符串时遇到一些问题:

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一起工作过,而且它总是有效......我似乎无法在这里找到问题。

1 个答案:

答案 0 :(得分:0)

噢,我不应该在那里取消引用指针...

pgm_read_byte(&str)

应该只是

pgm_read_byte(str)

现在正在运作。