wuzhengmin 发表于 2025-11-28 09:05:27

AiCube 编译错误请教,在 ercircle大侠指导下问题已经解决

一个已经在STC32G12K128成功驱动的LCD12864程序,


想移植到AICuber 的环境利用硬件SPI来串行硬件SPI驱动LCD12864

在中函数中声明了字库:


//<<AICUBE_USER_INCLUDE_BEGIN>>
// 在此添加用户头文件包含
#include "public.h"
#include "lcd12864.h"
#include "tupian.h"
//<<AICUBE_USER_INCLUDE_END>>



//<<AICUBE_USER_GLOBAL_DEFINE_BEGIN>>
// 在此添加用户全局变量定义、用户宏定义以及函数声明
extern u8 code ascii_table_8x16; //8*16字符
extern u8 code ascii_table_5x7;      //5*7字符
//<<AICUBE_USER_GLOBAL_DEFINE_END>>


编译的时候报错:

可以确定不是编译器所报的地方错(compiling lcdl2864.c...
App\ lcd12864\ tupian.h(7): error C142: illegal initialization App\ lcdl2864\ tupian.h(76) warning C34: 'u8: missing declaration specifiersl App\ lcd12864\ tupian.h(76): error C42: 'u8': not in formal parameter list)

这个字库文件所在的整个工程项目已经是成功点亮LCD,字库本身是没问题的,那么在AiCube下是怎样解决这个报错呢?

烦请哪位大神指点,谢谢谢谢谢谢!


#ifndef _TUPIAN_H
#define _TUPIAN_H

/*--调入了一幅图像:C:\Users\Administrator\Desktop\【选配】汉字液晶12864\BMP图片\清翔电子.bmp--*/
/*--宽度x高度=128x64 清翔纵向取模字节倒序--*/
//xdata
u8 const code picture_bmp1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x28,0xC8,0x08,0xC8,0x78,0x20,0x1C,0x90,0x10,0x50,0x30,
0x00,0x44,0xC8,0x00,0xF8,0x08,0x04,0x00,0xF8,0x08,0x08,0xF8,0x00,0x80,0x40,0xF0,

...............................................................................................................................,
}

wuzhengmin 发表于 2025-11-28 09:50:13

错误信息“app\lcd12864\tupian.h(7): error c142: illegal initialization”,
推断出在文件app\lcd12864\tupian.h的第7行存在非法的初始化语句。这可能是由于数组初始化的方式不正确,或者是初始化的值超出了变量类型的范围,但是这个数组,乃至整个
tupian.h,已经在STC32G12K128 C251 Keil 环境下编译过正常运行了

wuzhengmin 发表于 2025-11-28 09:54:27

我们之间打开tupian.h


#ifndef _TUPIAN_H
#define _TUPIAN_H

/*--调入了一幅图像:C:\Users\Administrator\Desktop\【选配】汉字液晶12864\BMP图片\清翔电子.bmp--*/
/*--宽度x高度=128x64 清翔纵向取模字节倒序--*/
//xdata
u8 const code picture_bmp1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x28,0xC8,0x08,0xC8,0x78,0x20,0x1C,0x90,0x10,0x50,0x30,
0x00,0x44,0xC8,0x00,0xF8,0x08,0x04,0x00,0xF8,0x08,0x08,0xF8,0x00,0x80,0x40,0xF0,
0x0C,0xD0,0x50,0x50,0xFC,0x50,0x50,0xD0,0x00,0x00,0xF8,0x48,0x48,0x48,0xF8,0x48,
0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x90,0x8C,0x83,0x8C,0xA0,0x90,0x8C,0x83,0x8C,0x90,0xA0,
0x80,0xA0,0x9F,0xA0,0xA7,0xA2,0xA1,0xA0,0xBF,0xA0,0xA4,0xA7,0x80,0x80,0x80,0xBF,
0x80,0xA3,0x95,0x89,0x97,0x91,0xA1,0xA1,0x80,0xA0,0x9F,0x82,0x82,0x82,0x9F,0x82,
0xA2,0xA2,0xBF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0xF0,0xF0,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0xC0,
0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0x60,0xE0,0xC0,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x1C,0x00,0x00,0x00,
0x20,0x20,0x21,0xB1,0xFF,0x7F,0x28,0xBC,0x9C,0xC8,0xC0,0x60,0x60,0x20,0x30,0x10,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0xB9,0xFD,0xFF,0xFB,0x98,
0x88,0x00,0x00,0x10,0x10,0xF0,0xC0,0x60,0x30,0x10,0x18,0x08,0x08,0xF8,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x70,0xE0,0x80,0x80,0xC0,0x60,0x60,0x30,0xB0,0x98,
0xDC,0xFD,0xFF,0x27,0x23,0xF3,0xF3,0x3F,0x1F,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0xFC,0xFF,0x0F,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x00,0x80,0x00,0x00,0x08,
0x0C,0x0E,0x07,0x07,0x02,0xC3,0xB5,0xDD,0xFF,0x43,0x43,0x4E,0xFC,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC4,0xE6,0x77,0x5F,0xEF,0x7F,0x3F,0x19,
0x08,0x7C,0xBC,0x86,0xFF,0x3F,0x00,0x00,0x0F,0x07,0x26,0x40,0x80,0xFF,0xFF,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x7F,0xF8,0x8C,0x1E,0x17,0x33,0x11,
0x18,0xFF,0xCE,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x60,0x31,0x33,0x37,0x1E,0x1C,0x1C,0x1C,
0xFC,0xEC,0x0C,0x0E,0x0E,0x0E,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x07,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x07,0x01,0x00,0x01,0x02,0x04,0x08,0x08,0x1F,0x1C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x06,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x02,0x00,0x00,0x00,
0x00,0x03,0x07,0x04,0x0C,0x0C,0x06,0x06,0x06,0x06,0x02,0x03,0x03,0x01,0x01,0x00,
0x00,0x00,0x00,0x02,0x07,0x0D,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x06,0x06,0x06,0x03,
0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x70,0x20,0x20,
0x20,0xF0,0xA0,0xA0,0x20,0x00,0x00,0xC0,0x50,0x60,0x40,0xC0,0x40,0x60,0x50,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,
0xE0,0x00,0x00,0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x20,0x20,0x20,0xC0,0x00,0x00,0x80,0x40,0x20,
0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x91,0x93,0x55,0x31,0x13,0xFD,
0x11,0x34,0x52,0x90,0x90,0x00,0x10,0x17,0x15,0x15,0x15,0xFF,0x15,0x15,0x15,0x17,
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,
0xFF,0x80,0x80,0x00,0x00,0x67,0x82,0x82,0x82,0x44,0x38,0x00,0x00,0x00,0x00,0xC3,
0xC3,0x00,0x00,0x00,0x00,0x60,0x80,0x84,0x84,0x8A,0x71,0x00,0x00,0x3F,0x40,0x80,
0x80,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x50,0x50,0xE0,0xBF,0x00,0x3F,0x50,0x50,0xE0,
0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

第7行是:u8 const code picture_bmp1[]={ ,看不出哪里有数组初始化的方式不正确,或者是初始化的值超出了变量类型的范围?加了xdata 也不行
       

ercircle 发表于 2025-11-28 10:14:03

u8: missing declaration


声明前包含def.h

wuzhengmin 发表于 2025-11-28 12:31:24

ercircle 发表于 2025-11-28 10:14
u8: missing declaration




谢谢指导!

另外我现在需要把下图中的SCLK和MOSI脚互换

就是我的LCD脚位是GND   VCC   SDA(MOSI)    SCLK            RS(DC)          RSTB(RES)    CSB(CS) 和试验箱的脚位,中间4位是反的:

         试验箱脚位是GND   VCC      SCLK       MOSI(SDA)   RES(RSTB)       DC(RS)       CS (CSB)


研究了很久,发现主要是 SCLK和   MOSI(SDA)这2位,硬件驱动SPI的话,一定要对应,其他2位,可以直接在程序中更改IO口

读试验箱图纸,有这样一句话:使用 SPI接口屏时设置为 P33-MOSI_4、P34-MISO_4
MOSI_4、MISO_4可以互换设置,请参考数据手册

再查例子程序77-DMA SPI刷新OLED12864显示屏程序,SSD1306驱动,0.96寸\test.uvproj-μVision

中有这样一段:


//******************************************
void Initialize_OLED(void)        //initialize OLED
{
        SPI_Config(3, 0);        //(SPI_io, SPI_speed), 参数:         SPI_io: 切换IO(SS MOSI MISO SCLK), 0: 切换到P1.4 P1.5 P1.6 P1.7,1: 切换到P2.4 P2.5 P2.6 P2.7, 2: 切换到P4.0 P4.1 P4.2 P4.3,3: 切换到P3.5 P3.4 P3.3 P3.2,
                                                //                                                                SPI_speed: SPI的速度, 0: fosc/4,1: fosc/8,2: fosc/16,3: fosc/2
        HSSPI_CFG2 = 0x40;        //交换MOSI MISO, P3.3是MOSI

        P1n_standard(Pin1);                        // SPI引脚设置为准双向口, SPI和控制信号
        PullUpEnable(P1PU, Pin1);        // 允许端口内部上拉电阻   PxPU, 要设置的端口对应位为1
        P3n_standard(0x2c);                        // SPI引脚设置为准双向口, SPI和控制信号
        PullUpEnable(P3PU, 0x2c);        // 允许端口内部上拉电阻   PxPU, 要设置的端口对应位为1
        P4n_standard(Pin7);                        // SPI引脚设置为准双向口, SPI和控制信号
        PullUpEnable(P4PU, Pin7);        // 允许端口内部上拉电阻   PxPU, 要设置的端口对应位为1


其中        HSSPI_CFG2 = 0x40;        //交换MOSI MISO, P3.3是MOSI
好像是交换交换MOSI MISO,但是查手册,HSSPI_CFG2 是
高速SPI配置寄存器2(HSSPI CFG2),其
SS_DACT:高速模式时SS控制信号的DEACTIVE 时间,详细见下图:好像也不对,没联系啊

辛苦版主帮忙看看,是否有办法设置交换MOSI和 MISO脚位?

ercircle 发表于 2025-11-28 13:15:15

wuzhengmin 发表于 2025-11-28 12:31
谢谢指导!

另外我现在需要把下图中的SCLK和MOSI脚互换



你看的别的型号例程,32G12K128没这功能。而且8H只能交换MOSI和MISO,不能交换SCLK

wuzhengmin 发表于 2025-11-28 13:27:48

偶,谢谢版主,我明白啦
页: [1]
查看完整版本: AiCube 编译错误请教,在 ercircle大侠指导下问题已经解决