完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`之前一直想用OLED做显示菜单,但是找不到官方源码,现在才知道要可用GIT获取源码,里面的firebleBLEprj_firmware工程包含有OLED,OLED驱动文件在firebleBLEsrcqnevb。在这里我直接用官方工程修改,可以显示了。
官方有一篇学git和移植OLED很说的很详细, 所以把其作出一个PDF当分享给大伙,呵呵! 参考一下官方OLED: OLED 适配 FireBLE 可以使用官网上配套的 OLED,OLED 有两种通信方式,IIC 协议和 SPI 协议,可通过更改少量 OLED 背部的器件位置来更改其通信方式。其中 开发板背面 OLED 接口的右边有日期字样的,如图,既可以使用 IIC 版的 OLED,也可以使用 SPI 版的 OLED;如果没有日期字样,则表示版本较老, 仅支持 IIC 点屏。 � 首先将 oled.c oled.h 以及 oledfont.h 拷贝到 BLE/src/qnevb 目录下。 � 在 usr_config.h 中添加开启 OLED 的宏定义,可以选择屏幕采用 IIC 协 议通信或者是 SPI 协议通信,由于 IIC 协议是软件模拟的通信协议,刷 屏速度略慢于 SPI 协议。 ///choose SPI OLED or IIC OLED (CFG_IIC_OLED , CFG_SPI_OLED) //#define CFG_IIC_OLED � 在 app_config.h 中添加 OLED 使用的宏定义。 /// FireBLE Board Indication #if (defined(CFG_FireBLE)) #define FireBLE_platform #if (defined(CFG_SWD)) #define FB_SWD 在 此处我用的是OLED SPI通信协议所以定义为: #define CFG_SPI_OLED #else #define FB_SWD #endif #if (defined(CFG_JOYSTICKS)) #define FB_JOYSTICKS 1 #else #define FB_JOYSTICKS 0 #endif #if (defined(CFG_IIC_OLED) || defined(CFG_SPI_OLED)) #define FB_OLED #if defined(CFG_IIC_OLED) #define FB_IIC_OLED 1 #else #define FB_IIC_OLED 0 #endif #if defined(CFG_SPI_OLED) #define FB_SPI_OLED 1 #else #define FB_SPI_OLED 0 #endif #else #define FB_OLED #endif #endif � 在 app_env.h 中加入头文件 #if (FB_OLED) #include "oled.h" #endif � 在 app_task.c 中添加定时器事件任务 #if (FB_OLED) {APP_OLED_DISPLAY_TIMER, ( {APP_OLED_STATE_DISPlAY_TIMER, (ke_msg_func_t) app_oled_state_display_timer_handler}, {APP_OLED_CLEAR_KEY_DISPLAY_TIMER, (ke_msg_func_t) app_oled_clear_key_display_timer_handler}, #endif � 在 app_task.h 中声明事件 #if (FB_OLED) APP_OLED_DISPLAY_TIMER, APP_OLED_STATE_DISPlAY_TIMER, APP_OLED_CLEAR_KEY_DISPLAY_TIMER, #endif � 在 usr_design.h 中声明如下函数 #if FB_OLED n extern int app_oled_clear_key_display_timer_handler(ke_msg_id_t const msgid, void const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id); n extern int app_oled_state_display_timer_handler(ke_msg_id_t const msgid, void *param, ke_task_id_t const dest_id, ke_task_id_t const src_id); #endif � 在 usr_design.c 中实现该函数 #if FB_OLED /** ****************************************************************** ********************** * @brief Handles oled display status. * * @param[in] msgid APP_OLED_STATE_DISPlAY_TIMER * @param[in] param Null * @param[in] dest_id TASK_APP * @param[in] src_id TASK_NONE * * @Return If the message was consumed or not. ****************************************************************** ********************** */ int app_oled_state_display_timer_handler(ke_msg_id_t const msgid, void *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { // Stop proxr alert switch(ke_state_get(TASK_APP)) { Case APP_ADV: { OLED_ShowString(0,2, (uint8_t *)" "); OLED_ShowString(0,2,(uint8_t *)" Advertising "); } break; case APP_IDLE: { if(app_proxr_env->enabled) { OLED_ShowString(0,2, (uint8_t *)" "); OLED_ShowString(0,2,(uint8_t *)" Connected "); } else { OLED_ShowString(0,2, (uint8_t *)" "); OLED_ShowString(0,2,(uint8_t *)" unConected "); } } break; case APP_INIT : { OLED_ShowString(0,2, (uint8_t *)" "); OLED_ShowString(0,2,(uint8_t *)" Init! "); } break; default : { OLED_ShowString(0,2, (uint8_t *)" "); OLED_ShowString(0,2,(uint8_t *)" Init! "); } break; } return (KE_MSG_CONSUMED); } int app_oled_clear_key_display_timer_handler(ke_msg_id_t const msgid, void const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { OLED_ShowString(0,4," "); return(KE_MSG_CONSUMED); } #endif � 在 system.c 中初始化 OLED #if (FB_OLED) OLED_Init(); //Init OLED OLED_Clear(); //Clear OLED,Black will be covered with the entire screen OLED_ShowString(0,0," FireBLE OLED"); OLED_ShowString(0,2,"stydying...... "); OLED_ShowString(0,4," 2015-9-27"); #endif 此时,OLED 已经可以正常使用了,在合适的地方开启定时器事件来显示需 要显示的内容 屏是用:中景园电子0.96OLED显示屏 附上文档大家相互学习及讨论!! `
git代码管理工具介绍和OLED显示.pdf
(310.2 KB, 下载次数: 4
)
|
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
909 浏览 0 评论
【KV260视觉入门套件试用体验】四、KV260 视觉入门套件和固件更新
1487 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI Library体验之OCR识别
1128 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI 通过迁移学习训练自定义模型
1502 浏览 0 评论
【KV260视觉入门套件试用体验】KV260系列之Petalinux镜像+Resnet 50探索
1154 浏览 0 评论
【AMD KV260视觉入门开发套件试用】4、简单几步体验ubuntu 20.04.3 LTS运行人员检测应用
1621浏览 1评论
951浏览 1评论
【KV260视觉入门套件试用体验】老刘记事儿KV260初体验之Micro-SD选型提速研究(三)
840浏览 1评论
【KV260视觉入门套件试用体验】KV260部署yolov3实现车辆和行人检测
2464浏览 1评论
【KV260视觉入门套件试用体验】基于KV260的人脸识别的实现与展示
831浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:17 , Processed in 0.603438 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号