江科大0.96寸OLED屏幕STM32F1代码移植至STM32F407ZGT6开发板遇到的挑战与问题解析

问题1

        由于江科大0.96寸OLED IIC代码是用STM32F103C8T6作为主控,其代码是针对CPU主频是72MHZ的,而STM32F407ZGT6的CPU主频是164MHZ,直接移植使用的话会导致OLED不亮,且代码不报错。

解决办法

在OLED写SCL高低电平和OLED写SDA高低电平成员函数处增加若干延时,使其时序延长。

我这里加的2us的时延(试了一下,1us也可以,且刷新频率变高了),其他不同主频的芯片可以试着更改延时。

问题2

        STM32F1系列的代码不能直接搬移到STM32F4系列代码上使用,这是因为一些GPIO口的初始化有略微的变化。

       解决办法

        那么,针对《江科大0.96寸OLEDSTM32F1代码移植到STM32F407ZGT6开发板》在GPIO初始化地方,进行下面修改即可。

这里的一定是输出模式,但是可以是开漏也可以改成推挽。记得这里初始化的GPIO和上面OLED写SCL高低电平和OLED写SDA高低电平成员函数的GPIO对应噢,不要忘记改上面的了。

问题3

        显示中文有时候会显示方框里加一个问号'?'。这是因为在索引汉字的时候没用索引到导致只能显示作者(江科大)设置的最后一个字符(方框里加一个问好‘?’)。这其实很简单,是我们keil里设置的编码字符显示问题导致的,一个是UTF-8或者是GB2312,一定要选择对应的编码。

解决办法        

        那么,在江科大OLED代码里,有两种编码字符显示的代码,一个是UTF-8,另一个是GB2312。

更改keil的字符编码:

江科大OLED代码对应更改:

       如果更改之后,还是不显示汉字或者发现OLED的某些相关文件字体编码和他其的不一样(这里指的是没有随着keil字符编码更改而更改的情况)。

        那么,我们直接从源头解决问题,从江科大实例代码copy一份你想要的编码代码。例如,使用GB2312。

代码路径:0.96寸OLED显示屏\01-程序源码\OLED-V1.2\GB2312\01-OLED功能函数测试-4针脚I2C接口\Hardware,将这四个文件放到你的工程里就好了。

结语

这样就能顺利的显示辣 ~.~

致谢

感谢B站江科大的无私奉献。@江协科技         jiangxiekeji.com

作者:beauty_learner

物联沃分享整理
物联沃-IOTWORD物联网 » 江科大0.96寸OLED屏幕STM32F1代码移植至STM32F407ZGT6开发板遇到的挑战与问题解析

发表回复