ifxz0123 发表于 2021-9-1 14:34

HK32F030MF4P6 OLED例程

本帖最后由 ifxz0123 于 2022-3-28 14:09 编辑

    分享HK32F030MF4P6 0.96寸 OLED例程。
   


勇敢的大白菜 发表于 2021-9-1 14:42

这个屏幕有花屏的时候吗?

ifxz0123 发表于 2021-9-1 15:14

勇敢的大白菜 发表于 2021-9-1 14:42
这个屏幕有花屏的时候吗?

花屏应该是时序不对或者写入的数据有问题

yklstudent 发表于 2021-9-2 13:44

你把数据线与其它信号线短接看看是否会乱码

skyred 发表于 2021-9-2 15:05

勇敢的大白菜 发表于 2021-9-1 14:42
这个屏幕有花屏的时候吗?

用时间长了,什么屏都有花的可能

盾视工作室 发表于 2021-12-20 22:56

你这上传的代码有问题啊,都报错20多,这是从那随便上来个代码程序

ifxz0123 发表于 2021-12-21 08:54

盾视工作室 发表于 2021-12-20 22:56
你这上传的代码有问题啊,都报错20多,这是从那随便上来个代码程序 ...

我下载了工程,编译,删除了生成了过程文件,重新编译,没有报错呀!只有一个warning。我的keil for ARM是V5.29版本。你是否安装了HK32F030M的器件包,是否用的是Keil for ARM?

盾视工作室 发表于 2021-12-21 10:45

就是这样报错,我用的是Keil5.25版本,别的程序下载正常

ifxz0123 发表于 2021-12-21 13:33

盾视工作室 发表于 2021-12-21 10:45
就是这样报错,我用的是Keil5.25版本,别的程序下载正常

这个问题,有可能是你的Keil安装路径中的stdint.h中没有u8, u16,u32这个名称数据类型的定义导致的。u8,u16,u32这些是比较旧的数据类型别名,较新的Keil里自带的stdint.h文件好像删除了这几个类型的定义。我的那个stdint.h好像是从旧的Keil版本复制过来。
这里给你提供3个解决办法。
办法1:用unsignedchar替换u8,unsigned short int替换u16,unsigned int 替换u32。或者uint8_t替换u8,uint16_t 替换u16, uint32_t替换u32,也是可以。


办法2:修改Keil安装目录中的stdint.h,添加对u8, u16, u32名称数据类型的定义。参考如下:


办法3:用我提供的stdint.h替换你的stdint.h。这个文件在keil中的路径如下:Keil_v5/ARM/ARMCC/include,Keil_v5是Keil的安装文件夹,你的可能与我的命名不一样。
我的stdint.h文件:






盾视工作室 发表于 2021-12-22 21:03

还有另外一个地方报错_sys_exit(int x)
{
        x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{      
        while((USART1->ISR&0X40)==0);//循环发送,直到发送完毕   
    USART1->TDR = (unsigned char) ch;      
        return ch;
}
#endif

下面是报错内容,再帮我看下怎么改才能编译。
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'F:\Keil_v5\ARM\ARMCC\Bin'
Build target 'HK32F030MF4P6'
compiling usart.c...
..\Source\Driver\usart.c(22): error:#260-D: explicit type is missing ("int" assumed)
_sys_exit(int x)
..\Source\Driver\usart.c: 0 warnings, 1 error
compiling usmart_config.c...
..\Source\USMART\usmart_config.c(18): error:#29: expected an expression
};                                                  
..\Source\USMART\usmart_config.c(12): error:#1514: an empty initializer is invalid for an array with unspecified bound
struct _m_usmart_nametab usmart_nametab[]=
..\Source\USMART\usmart_config.c(26): error:#28: expression must have a constant value
        usmart_nametab,
..\Source\USMART\usmart_config.c: 0 warnings, 3 errors
".\Objects\Project.axf" - 4 Error(s), 0 Warning(s).

ifxz0123 发表于 2021-12-23 09:05

本帖最后由 ifxz0123 于 2021-12-23 09:41 编辑

盾视工作室 发表于 2021-12-22 21:03
还有另外一个地方报错_sys_exit(int x)
{
      x = x;


这个不勾选Use MicroLIB报错,还导致卡死在printf调用上,我遇到过的,并且我再在usart.c里也添加了注释说明。

为了支持使用USMART功能,这段printf函数是从正点原子STM32F103例程代码里移植过来的,我也不大清楚你打开工程后会出现报错的情况。

盾视工作室 发表于 2021-12-23 22:22

有勾选了的,还是有三个地方报错,全在这个页面
#include "usmart.h"
#include "usmart_str.h"

////////////////////////////用户配置区///////////////////////////////////////////////
//这下面要包含所用到的函数所申明的头文件(用户自己添加)
#include "delay.h"       
#include "usart.h"               
#include "led.h"
                                                                                               
//函数名列表初始化(用户自己添加)
//用户直接在这里输入要执行的函数名及其查找串
struct _m_usmart_nametab usmart_nametab[]=
{
#if USMART_USE_WRFUNS==1         //如果使能了读写操作
        (void*)read_addr,"u32 read_addr(u32 addr)",
        (void*)write_addr,"void write_addr(u32 addr,u32 val)",       
#endif
};                                                  
///////////////////////////////////END///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//函数控制管理器初始化
//得到各个受控函数的名字
//得到函数总数量
struct _m_usmart_dev usmart_dev=
{
        usmart_nametab,
        usmart_init,
        usmart_cmd_rec,
        usmart_exe,
        usmart_scan,
        sizeof(usmart_nametab)/sizeof(struct _m_usmart_nametab),//函数数量
        0,                  //参数数量
        0,               //函数ID
        1,                //参数显示类型,0,10进制;1,16进制
        0,                //参数类型.bitx:,0,数字;1,字符串          
        0,                  //每个参数的长度暂存表,需要MAX_PARM个0初始化
        0,                //函数的参数,需要PARM_LEN个0初始化
};   

ifxz0123 发表于 2021-12-24 00:32

盾视工作室 发表于 2021-12-23 22:22
有勾选了的,还是有三个地方报错,全在这个页面
#include "usmart.h"
#include "usmart_str.h"


      我重新安装了KeilV5.25,从21lic下载代码,第一次编译报错,提示u8,u16等没有定义。我用21ic的stdint.h替换了keil安装目录中的stdint.h后,重重编译并没有遇到你碰到的问题。
   你重新下载一下工程,然后用21ic上传的stdint.h文件替换你keil安装目录里的stdint.h文件,编译试试。如果还报错,你重装keil试试。

   如果还有问题,我因为无法解答你,不清楚哪里有问题。我用keilV5.25,KeilV5.27都没遇到你的这个问题。
有问题,你也要试着自行解决问题,我没有义务帮你解决问题。况且编译报错,你跟个报错提示自行分析解决问题嘛,在网上搜索一下嘛。我也遇到过下载别人的给的工程,自己编译也出问题,我也是自己分析、网上搜索解决的。我以前从网上下载过技小新分享的源程序DAP-V2.0,自己编译时也是好多error,最后也是自己根据提示查找编译报错的原因的嘛!作为一个MCU程序开发者,解决与排除代码bug、编译错误也是一种基本能力嘛!

盾视工作室 发表于 2021-12-24 16:51

ifxz0123 发表于 2021-12-24 00:32
我重新安装了KeilV5.25,从21lic下载代码,第一次编译报错,提示u8,u16等没有定义。我用21ic的stdi ...

好的,非常感谢!

pixhw 发表于 2022-1-2 13:40

这个oled的io好多   

sdlls 发表于 2022-1-2 13:40

用了内部的ram了吗?

febgxu 发表于 2022-1-2 13:41

HK32F030MF4P6效果怎么样

xiaoyaodz 发表于 2022-1-2 13:41

OLED例程还是比较多的。

fentianyou 发表于 2022-1-2 13:41

为什么不使用iic接口呢

selongli 发表于 2022-1-2 13:41

tft的lcd可以驱动吗
页: [1] 2 3
查看完整版本: HK32F030MF4P6 OLED例程