打印
[其他ST产品]

【ST评测+STM32G431驱动OLED屏显示】

[复制链接]
596|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-12-8 15:52 编辑

STM32G431开发板的周边外设比较少,为了便于人际交互最先考虑的是为其配上一个显示屏,以利于信息的观察。
为了较少地占用系统资源,这里采用的是I2C接口的双色OLED屏,考虑到STM32G431开发板配有Arduino接口,就将OLED屏放到Arduino接口上来使用,从而能够不必连线就解决问题。
OLED屏与MCU大的连接关系为:
SCL---PA5
SDA---PA6
控制相关引脚输出高低电平的语句定义为:
#define OLED_SCLK_Set()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,GPIO_PIN_SET)
#define OLED_SCLK_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,GPIO_PIN_RESET)
#define OLED_SDIN_Set()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_SET)
#define OLED_SDIN_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_RESET)
实现引脚输出功能配置的函数为:
void GPIO_OLED_INIT(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Pin = GPIO_PIN_5;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   
GPIO_InitStruct.Pin = GPIO_PIN_6;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

由于STM32G431的主频速度比较高,故直接移植程序代码是有问题的,需要添加相应的延时函数来辅助解决。
修改后的辅助显示函数为:
void IIC_Start()
{
OLED_SCLK_Set();
Delay(1);
OLED_SDIN_Set();
Delay(1);
OLED_SDIN_Clr();
Delay(1);
OLED_SCLK_Clr();
Delay(1);
}

void IIC_Stop()
{
OLED_SCLK_Set();
Delay(1);
OLED_SDIN_Clr();
Delay(1);
OLED_SDIN_Set();
Delay(1);
}

void IIC_Wait_Ack()
{
OLED_SCLK_Set();
Delay(1);
OLED_SCLK_Clr();
Delay(1);
}

实现下图显示效果的主程序为:
int main(void)
{
HAL_Init();
SystemClock_Config();
GPIO_OLED_INIT();
OLED_Init();
OLED_Clear();
OLED_ShowString(10,2,"STM32G431",16);
OLED_ShowString(10,4,"OLED TEST",16);
OLED_ShowCHinese(79,2,9);
OLED_ShowCHinese(95,2,10);
OLED_ShowCHinese(111,2,11);
while (1);
}
OLED屏显示效果

涉及的字符串显示函数为:
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)
{
    unsigned char j=0;
    while (chr[j]!='\0')
    {       OLED_ShowChar(x,y,chr[j],Char_Size);
            x+=8;
            if(x>120){x=0;y+=2;}
            j++;
    }
}


有了OLED屏的显示功能,后面以RTC实现一个电子时钟也就方便一些了。

使用特权

评论回复
沙发
mmuuss586| | 2020-12-11 12:59 | 只看该作者
不错

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2020-12-11 13:05 | 只看该作者

感谢支持!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

453

主题

2750

帖子

38

粉丝