如何声明存储在 PROGMEM 中的矩阵
How to declare a matrix that is stored in PROGMEM
我正在尝试编写一个可以驱动 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 来自:p2.c:';'预计
第 15 行是字符 [96][5] PROGMEM = ...
您需要将其声明为const 才能放入flash。另外我猜你需要制作两个数组。
尝试:
const char c1[] PROGMEM = "1";
const char c2[] PROGMEM = "2";
const char * const strings[] PROGMEM = {c1, c2};
const PROGMEM uint8_t characters[96][5] = {
{
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000
},
... // 95 more symbols
};
注意,如果一个数组声明为维度,它应该包含初始化器中的所有数据,即所有 96 个符号。
UPD: 错误可能是由 pc2.c
中 #include "max7219.h"
之前的代码引起的
如果你有几个"includes",那么检查上一个。即:
#include "a.h"
#include "b.h"
#include "max7219.h"
错误可能在b.h
结尾
我正在尝试编写一个可以驱动 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 来自:p2.c:';'预计
第 15 行是字符 [96][5] PROGMEM = ...
您需要将其声明为const 才能放入flash。另外我猜你需要制作两个数组。
尝试:
const char c1[] PROGMEM = "1";
const char c2[] PROGMEM = "2";
const char * const strings[] PROGMEM = {c1, c2};
const PROGMEM uint8_t characters[96][5] = {
{
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000
},
... // 95 more symbols
};
注意,如果一个数组声明为维度,它应该包含初始化器中的所有数据,即所有 96 个符号。
UPD: 错误可能是由 pc2.c
中 #include "max7219.h"
之前的代码引起的
如果你有几个"includes",那么检查上一个。即:
#include "a.h"
#include "b.h"
#include "max7219.h"
错误可能在b.h