0

我正在尝试编写一个头文件来驱动 LED 矩阵,但我遇到了无法解决的语法错误

我已经在我认为有必要的地方添加了“;”并检查了https://www.nongnu.org/avr-libc/user-manual/pgmspace.html

#ifndef max7219_H_
#define max7219_H_

#include <io.h>
#include <pgmspace.h>
#include <delay.h>
#include <stdint.h>

#define SLAVE_SELECT PORTB &= ~( 1<<PB4 );     
#define SLAVE_DESELECT PORTB |= ~( 1<<PB4 ); 

char characters[96][5] PROGMEM = 
{ 
   {
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000 
    }  
};

错误是:错误:max7219.h(15),#included from: p2.c: ';' 预期的

第 15 行是 char characters[96][5] PROGMEM = ...

4

2 回答 2

0

您需要将其声明为 const 以放入闪存中。另外我猜你需要制作两个数组。

尝试:

     const char c1[] PROGMEM = "1";
     const char c2[] PROGMEM = "2";

     const char * const strings[] PROGMEM = {c1, c2};
于 2019-04-20T17:37:03.953 回答
0
const PROGMEM uint8_t characters[96][5] = {
    {
      0b00000000,
      0b00000000,
      0b00000000,
      0b00000000,
      0b00000000 
   },
    ... // 95 more symbols
 };

注意,如果一个数组声明了维度,它应该包含初始化器中的所有数据,即所有 96 个符号。

UPD:错误可能是由pc2.c之前的代码引起的#include "max7219.h" 如果您有多个“包含”,请检查前一个。IE:

#include "a.h"
#include "b.h"
#include "max7219.h"

错误可能在末尾b.h

于 2019-04-24T07:59:59.307 回答