没有C币的同学请私信我。
本例程参考正点原子在STM32模拟SPI控制0.9寸OLED,主要更改如下
#define PIN_NUM_MISO 25 // 数据 d1
#define PIN_NUM_CLK 19 // 时钟 d0
#define PIN_NUM_CS 22
#define PIN_NUM_DC 21
#define PIN_NUM_RST 18
#define OLED_CS(X) X?gpio_set_level(PIN_NUM_CS, 1):gpio_set_level(PIN_NUM_CS, 0)
#define OLED_RST(X) X?gpio_set_level(PIN_NUM_RST, 1):gpio_set_level(PIN_NUM_RST, 0)
#define OLED_DC(X) X?gpio_set_level(PIN_NUM_DC, 1):gpio_set_level(PIN_NUM_DC, 0)
#define OLED_D0(X) X?gpio_set_level(PIN_NUM_CLK, 1):gpio_set_level(PIN_NUM_CLK, 0)
#define OLED_D1(X) X?gpio_set_level(PIN_NUM_MISO, 1):gpio_set_level(PIN_NUM_MISO, 0)
void OLED_GPIO_Init(void)
{
// GPIO_Init(OLED_PORT_NORMAL, &GPIO_InitStruct);
gpio_set_direction(PIN_NUM_MISO, GPIO_MODE_OUTPUT);
gpio_set_direction(PIN_NUM_CLK, GPIO_MODE_OUTPUT);
gpio_set_direction(PIN_NUM_CS, GPIO_MODE_OUTPUT);
gpio_set_direction(PIN_NUM_DC, GPIO_MODE_OUTPUT);
gpio_set_direction(PIN_NUM_RST, GPIO_MODE_OUTPUT);
}
主要就是改了GPIO初始化程序,其他的基本没有动,不过有一个问题必须强调一下,ESP32的gpio是有限制的,不是所有io口都可以做输出。
(PIN_NUM_MISO)(PIN_NUM_CLK); (PIN_NUM_CS); (PIN_NUM_DC); (PIN_NUM_RST);
这五个是宏定义的io口编号。