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,
...............................................................................................................................,
}
错误信息“app\lcd12864\tupian.h(7): error c142: illegal initialization”,
推断出在文件app\lcd12864\tupian.h的第7行存在非法的初始化语句。这可能是由于数组初始化的方式不正确,或者是初始化的值超出了变量类型的范围,但是这个数组,乃至整个
tupian.h,已经在STC32G12K128 C251 Keil 环境下编译过正常运行了
我们之间打开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 也不行
u8: missing declaration
声明前包含def.h
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脚位?
wuzhengmin 发表于 2025-11-28 12:31
谢谢指导!
另外我现在需要把下图中的SCLK和MOSI脚互换
你看的别的型号例程,32G12K128没这功能。而且8H只能交换MOSI和MISO,不能交换SCLK
偶,谢谢版主,我明白啦
页:
[1]