【AT-START-F403A测评】五、模拟驱动SPI屏并发现个问题
[复制链接]
本帖最后由 ddllxxrr 于 2020-10-6 19:26 编辑
我有个1.3寸的SPI屏。有例程的,把例程里的OLED.c及字库做为一个子目录。统统考进AT的一个例程里。
我定义的是四根线:
PB12----------SCL
PB13----------SDA
PB14----------RES
PB15----------DC
具体就改一下初始化:
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOB, ENABLE); //ê1ÄüA¶Ë¿úê±Öó
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_12|GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP; //íÆíìêä3ö
GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;//Ëù¶è50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //3õê¼»ˉGPIOD3,6
GPIO_SetBits(GPIOB,GPIO_Pins_12|GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15);
在头文件中:
#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pins_12)//CLK
#define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pins_12)
#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pins_13)//DIN
#define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pins_13)
#define OLED_RST_Clr() GPIO_ResetBits(GPIOB,GPIO_Pins_14)//RES
#define OLED_RST_Set() GPIO_SetBits(GPIOB,GPIO_Pins_14)
#define OLED_DC_Clr() GPIO_ResetBits(GPIOB,GPIO_Pins_15)//DC
#define OLED_DC_Set() GPIO_SetBits(GPIOB,GPIO_Pins_15)
#define OLED_BLK_Clr() GPIO_ResetBits(GPIOA,GPIO_Pins_4)//CS
#define OLED_BLK_Set() GPIO_SetBits(GPIOA,GPIO_Pins_4)
背景也没有用,直接接到3.3V。
至于片选我直接选中。毕竟就一个SPI。
以下是运行结果:
我刷成蓝屏就说明驱动成功了,又画个圆,也可以看到,但我万万没想到显示个字符会不出来,就是黑块,我想是SPI屏的显示字符部分有毛病。
不想了,想得蛋痛。欲知后事如何且看下回分解吧!
发现个问题,手册明明说所有GPIO口在AHB,为什么初始化时都是APB2,表示不懂了。
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOB, ENABLE);
按手册的应是:RCC_AHBPeriphClockCmd(RCC_AHBPERIPH_GPIOB, ENABLE);
|