打印
[技术文档]

HK32F030MF4P6 OLED例程

[复制链接]
9535|48
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ifxz0123 于 2022-3-28 14:09 编辑

    分享HK32F030MF4P6 0.96寸 OLED例程。
    HK32F030MF4P6_OLED例程.zip (358.05 KB)


使用特权

评论回复

相关帖子

沙发
勇敢的大白菜| | 2021-9-1 14:42 | 只看该作者
这个屏幕有花屏的时候吗?

使用特权

评论回复
板凳
ifxz0123|  楼主 | 2021-9-1 15:14 | 只看该作者
勇敢的大白菜 发表于 2021-9-1 14:42
这个屏幕有花屏的时候吗?

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

使用特权

评论回复
地板
yklstudent| | 2021-9-2 13:44 | 只看该作者
你把数据线与其它信号线短接看看是否会乱码

使用特权

评论回复
5
skyred| | 2021-9-2 15:05 | 只看该作者
勇敢的大白菜 发表于 2021-9-1 14:42
这个屏幕有花屏的时候吗?

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

使用特权

评论回复
6
盾视工作室| | 2021-12-20 22:56 | 只看该作者
你这上传的代码有问题啊,都报错20多,这是从那随便上来个代码程序

使用特权

评论回复
7
ifxz0123|  楼主 | 2021-12-21 08:54 | 只看该作者
盾视工作室 发表于 2021-12-20 22:56
你这上传的代码有问题啊,都报错20多,这是从那随便上来个代码程序 ...

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

使用特权

评论回复
8
盾视工作室| | 2021-12-21 10:45 | 只看该作者
就是这样报错,我用的是Keil5.25版本,别的程序下载正常

使用特权

评论回复
9
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:用unsigned  char替换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文件: stdint.zip (2.18 KB)






使用特权

评论回复
10
盾视工作室| | 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).

使用特权

评论回复
11
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例程代码里移植过来的,我也不大清楚你打开工程后会出现报错的情况。

使用特权

评论回复
12
盾视工作室| | 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初始化
};   

使用特权

评论回复
13
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、编译错误也是一种基本能力嘛!

使用特权

评论回复
14
盾视工作室| | 2021-12-24 16:51 | 只看该作者
ifxz0123 发表于 2021-12-24 00:32
我重新安装了KeilV5.25,从21lic下载代码,第一次编译报错,提示u8,u16等没有定义。我用21ic的stdi ...

好的,非常感谢!

使用特权

评论回复
15
pixhw| | 2022-1-2 13:40 | 只看该作者
这个oled的io好多   

使用特权

评论回复
16
sdlls| | 2022-1-2 13:40 | 只看该作者
用了内部的ram了吗?

使用特权

评论回复
17
febgxu| | 2022-1-2 13:41 | 只看该作者
HK32F030MF4P6效果怎么样

使用特权

评论回复
18
xiaoyaodz| | 2022-1-2 13:41 | 只看该作者
OLED例程还是比较多的。  

使用特权

评论回复
19
fentianyou| | 2022-1-2 13:41 | 只看该作者
为什么不使用iic接口呢  

使用特权

评论回复
20
selongli| | 2022-1-2 13:41 | 只看该作者
tft的lcd可以驱动吗  

使用特权

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

本版积分规则

82

主题

536

帖子

14

粉丝