首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'prog_uint8_t‘没有命名一个类型- ARDUINO IDE

'prog_uint8_t‘没有命名一个类型- ARDUINO IDE
EN

Stack Overflow用户
提问于 2019-07-14 01:02:00
回答 1查看 2.9K关注 0票数 0

恐怕这是一个非常新手的问题,但我已经尽了最大的努力去理解这个问题,但由于我对C编程的经验很少,所以没有什么进展。

我目前正在从Instructable:https://www.instructables.com/id/Jar-of-Fireflies/上获得一个一两年前的旧项目

这包括一个为萤火虫模式编写的固件的C文件,但是这是12年前写的。

然而..。我不会跟着instructable到N度的。相反,我使用的是一个DIP AtTiny85,这是我以前用Arduino作为ISP编程的。因此,希望能够用在Arduino IDE或Atmel Studio中编译代码。

每次在Arduino IDE中编译它时,我都会收到以下错误:“prog_uint8_t”不指定类型,这会导致大量错误滚过。

据我所知,这一减速在2010年前后作为AVR GCC的一部分被移除/改变.无论如何,我可以让它正确编译以运行代码吗?可能使用宏或包含库。我尝试过一些库,如#include <stdint.h>,但认为这应该作为自动<Arduino.h>包含的一部分来处理。我确信,如果我带了适当的程序员,我的问题可能会消失,但我肯定有一个简单的解决办法。

在上面的instructable链接中作为.tgz提供的代码,包括头、c可执行文件、十六进制等,

用于快速读取主c可执行声明.

代码语言:javascript
复制
const prog_uint8_t about[] = "Jar of Fireflies\n"
        "Design and Implementation by Xander Hudson (jar@synoptic.org)\n"
        "Idea and Inspiration by Kayobi Tierney\n"
        "Special thanks to Katie Horn for getting me to think about 
electronics";
const prog_uint8_t version[] = "$Revision: 1.41 $ $Date: 2007/01/10 
04:35:55 $";

#define LEDS_OFF ~(_BV(PIN_A) | _BV(PIN_B))

#define WATCHDOG_OK  WDTCR |= _BV(WDIE)

uint8_t pickapin (uint8_t);
const Song *pickasong (void);
uint8_t randwaitval (void);
uint8_t randbits (uint8_t);
uint8_t pickmaster (void);
uint8_t randscaleval (void);
void showbootup (void);

volatile uint8_t ch1restcount;
volatile uint8_t ch2restcount;

volatile uint8_t ch1nextnote;
volatile uint8_t ch2nextnote;

volatile uint8_t ch1scale;
volatile uint8_t ch2scale;
volatile uint8_t ch1nextscale;
volatile uint8_t ch2nextscale;

uint8_t mood = 2;
uint16_t mood_count = 30;   // WDT cycles before changing mood

volatile uint8_t masterpinmask;

错误:

代码语言:javascript
复制
   In file included from C:\Program Files         
(x86)\Arduino\libraries\Firefly/firefly.h:12:0,

             from     
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:
C:\Program Files (x86)\Arduino\libraries\Firefly/songs/songs.h:4:11: error: 'prog_uint8_t' does not name a type

 const prog_uint8_t  *notes; 

       ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:14:0,

             from         
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/bootsong.h:3:7: error: 'prog_uint8_t' does not name a type

const prog_uint8_t bootsongnotes[] = {0, 4, 9, 16, 24, 33, 41, 47, 50, 49, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/bootsong.h:5:26: error: 'bootsongnotes' was not declared in this scope

 Song bootsong = { sizeof(bootsongnotes), bootsongnotes };

                      ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/bootsong.h:5:42: error: 'bootsongnotes' was not declared in this scope

 Song bootsong = { sizeof(bootsongnotes), bootsongnotes };

                                      ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:25:0,

             from         
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2a.h:6:7: error: 'prog_uint8_t' does not name a type

const prog_uint8_t song2anotes[] = {2, 29, 81, 123, 130, 104, 63, 24, 2, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2a.h:20:24: error: 'song2anotes' was not declared in this scope

 Song song2a = { sizeof(song2anotes), song2anotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2a.h:20:38: error: 'song2anotes' was not declared in this scope

 Song song2a = { sizeof(song2anotes), song2anotes };

                                  ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:26:0,

             from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2b.h:6:7: error: 'prog_uint8_t' does not name a type

 const prog_uint8_t song2bnotes[] = {1, 31, 89, 126, 119, 85, 42, 6, 1, 1,

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2b.h:19:24: error: 'song2bnotes' was not declared in this scope

  Song song2b = { sizeof(song2bnotes), song2bnotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2b.h:19:38: error: 'song2bnotes' was not declared in this scope

Song song2b = { sizeof(song2bnotes), song2bnotes };

                                  ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:27:0,

             from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2c.h:6:7: error: 'prog_uint8_t' does not name a type

 const prog_uint8_t song2cnotes[] = {2, 25, 70, 117, 146, 144, 111, 61, 18, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2c.h:21:24: error: 'song2cnotes' was not declared in this scope

Song song2c = { sizeof(song2cnotes), song2cnotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2c.h:21:38: error: 'song2cnotes' was not declared in this scope

 Song song2c = { sizeof(song2cnotes), song2cnotes };

                                  ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:28:0,

             from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2d.h:6:7: error: 'prog_uint8_t' does not name a type

 const prog_uint8_t song2dnotes[] = {1, 27, 72, 109, 121, 104, 61, 17, 1, 1, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2d.h:17:24: error: 'song2dnotes' was not declared in this scope

 Song song2d = { sizeof(song2dnotes), song2dnotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2d.h:17:38: error: 'song2dnotes' was not declared in this scope

 Song song2d = { sizeof(song2dnotes), song2dnotes };

                                  ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:29:0,

             from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2e.h:6:7: error: 'prog_uint8_t' does not name a type

const prog_uint8_t song2enotes[] = {1, 26, 73, 116, 131, 115, 80, 39, 8, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2e.h:21:24: error: 'song2enotes' was not declared in this scope

Song song2e = { sizeof(song2enotes), song2enotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2e.h:21:38: error: 'song2enotes' was not declared in this scope

 Song song2e = { sizeof(song2enotes), song2enotes };

                                  ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:30:0,

             from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2f.h:6:7: error: 'prog_uint8_t' does not name a type

const prog_uint8_t song2fnotes[] = {2, 36, 94, 130, 121, 79, 27, 1, 1, 1, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2f.h:17:24: error: 'song2fnotes' was not declared in this scope

 Song song2f = { sizeof(song2fnotes), song2fnotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2f.h:17:38: error: 'song2fnotes' was not declared in this scope

 Song song2f = { sizeof(song2fnotes), song2fnotes };

                                  ^

In file included from C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:31:0,

             from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2g.h:6:7: error: 'prog_uint8_t' does not name a type

 const prog_uint8_t song2gnotes[] = {2, 42, 99, 121, 96, 42, 3, 1, 1, 1, 1, 

   ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2g.h:14:24: error: 'song2gnotes' was not declared in this scope

 Song song2g = { sizeof(song2gnotes), song2gnotes };

                    ^

C:\Program Files (x86)\Arduino\libraries\Firefly/songs/song2g.h:14:38: error: 'song2gnotes' was not declared in this scope

 Song song2g = { sizeof(song2gnotes), song2gnotes };

                                  ^

In file included from 
C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino:8:0:

C:\Program Files (x86)\Arduino\libraries\Firefly/firefly.h:133:7: error: 
'prog_uint8_t' does not name a type

 const prog_uint8_t bitmasks[] = { 

   ^

 Firefly01:11: error: 'prog_uint8_t' does not name a type

 const prog_uint8_t about[] = "Jar of Fireflies\n"

   ^

Firefly01:15: error: 'prog_uint8_t' does not name a type

  const prog_uint8_t version[] = "$Revision: 1.41 $ $Date: 2007/01/10 04:35:55 $";

   ^

In file included from C:\Users\Andrew\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\cores\arduino/Arduino.h:28:0,

             from sketch\Firefly01.ino.cpp:1:

C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino: In function 'int main()':

Firefly01:230: error: 'const Song' has no member named 'notes'

                 temp = pgm_read_byte(&ch1song->notes[ch1noteptr++]);

                                                ^

Firefly01:244: error: 'const Song' has no member named 'notes'

                 temp = pgm_read_byte(&ch2song->notes[ch2noteptr++]);

                                                ^

Firefly01:288: error: 'const Song' has no member named 'notes'

         temp = pgm_read_byte(&ch1song->notes[ch1noteptr++]);

                                        ^

Firefly01:313: error: 'const Song' has no member named 'notes'

         temp = pgm_read_byte(&ch2song->notes[ch2noteptr++]);

                                        ^

C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino: In function 
'void showbootup()':

Firefly01:379: error: 'const Song' has no member named 'notes'

             ch1nextnote = pgm_read_byte(&ch1song->notes[ch1noteptr++]);

                                                   ^

C:\Users\Andrew\Documents\Arduino\Firefly01\Firefly01.ino: In function 'uint8_t randbits(uint8_t)':

Firefly01:485: error: 'bitmasks' was not declared in this scope

 return ((lfsr & 0xFF) & pgm_read_byte(&bitmasks[bits]));    

                                        ^

exit status 1
'prog_uint8_t' does not name a type

//

我期望程序编译,一旦一种方式被定义为无符号的8/16/32位int减速。

如果有人能帮我更好的理解那就太好了。因为我不想写我自己的代码,当有人花了很长时间来获得萤火虫的乐趣!但请我愿意学习,所以任何链接到这样的东西将是很好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-14 01:48:56

不过,在您使用prog_uint8_t之前添加了以下代码,就可以让它工作了。

代码语言:javascript
复制
#define __PROG_TYPES_COMPAT__
#include  <avr/pgmspace.h>

typedef uint8_t PROGMEM prog_uint8_t;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57023846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档