BADAPPLE_STM32_OLED,视频保存格式为C版本。

期末了,我现在还在搞单片机我也是佩服我自己。真不怕挂科了。

看到网上的大佬都能做到用STM32显示BADAPPLE在OLED上,本宝宝表示也想做一个。奈何资料太少,只能自己动手做一个

先用CUBEMX初始化SPI以及SDIO+FAFTS

将视频的每一帧转成数组,内容参考

https://www.bilibili.com/video/BV174411Z7qc

一共创建了6564个C文件,大小51.2M

现在就是如何读取数组的问题

我的打算是用FATFS将数组的内容提取出来,赋值给TEMP数组,毕竟一个数组就只有128*64,stm32的内容RAM是够用。

现在的问题就是,我对FATFS系统不熟悉,所以不知道读出来的数组是否正确.

OLED显示

直接移植图形库,去结合HAL库,画了我一下午的时间,图形库出处:https://www.bilibili.com/video/BV1MV411o7P5

他的程序还是很好移植的,我花了半天的代价,把他的程序移植到了我的hal库中.注:对考研狗来说,时间就是金钱.

SD卡的读取

经过一天的尝试,我已经能够读取SD卡中的内容,现在需要做的就是将读取的内容转换成CHAR型变量输出到OLED中去,这时候我就需要申请一个temp数组,大小为1024,将所获得的字符串的相应的部分提取出来减去’0’,然后将所得的16进制代码转换成十进制代码赋值.是这样吗?

现在还剩最后一步:将读出来的数据处理成数据后传给图片缓存函数.

FATFS系统一次能读4G的数据,所以我就设计了一个c语言,将所有的文件都集中在一个文件中。然后一次性打开文件。然后读取特定位,就是打开文件后,发现读取文件之后的数组好像不能直接使用,所以就用一个for循环,将数据读出来。我也不太清楚是怎么一回事。

出新问题

现在发现,光是打开文件,并且关闭文件就要好长时间,遍历整个文件需要将近两个消失。这是我不能接受的,只能在电脑上处理文件之后,单片机再去读取。

大坑

由于需要读取内存卡里的数组的时候需要将数组转化成字符串,所以我用DEV在电脑上先行实验。实验结果完善后,加在单片机上,发现没有完美运行。实验发现,单片机的换行符为‘/r/n’,所以在特判的时候需要

     if (*temp_pointer == '\r') temp_pointer=temp_pointer+2;;

2、有时候SD卡读取失败可以试一下,重新上电。为此我折腾了半个小时。定时器中断不能占用太长时间不然回导致SD卡读取失败。

字符串16进制转十进制

因为程序运行时不能再以十六进制传数,所以只能转换

uint8_t HEX_TO_DEC(uint8_t *T_HEX)
{char str[2],temp;if((*T_HEX>='0')&&(*T_HEX<='9'))str[0] = *T_HEX - '0';else if((*T_HEX>='A')&&(*T_HEX<='F'))str[0] = *T_HEX - 'A' + 10;T_HEX++;if((*T_HEX>='0')&&(*T_HEX<='9'))str[1] = *T_HEX - '0';else if((*T_HEX>='A')&&(*T_HEX<='F'))str[1] = *T_HEX - 'A' + 10;temp = str[0]*16+str[1];return temp;
}

时间定时

我定时器没有配置好,导致我一直以为是数据传输有问题,搞了半天结果发现是定时器的问题,具体问题就是定时器时间没设定好。结果我没乐意等,就以为是数据处理的问题。哎

【stm32】badapple播放心路例程相关推荐

  1. STM32 4x4矩阵薄膜键盘例程

    STM32 4x4矩阵薄膜键盘例程 STM32 4x4矩阵薄膜键盘例程 TM32 4x4矩阵薄膜键盘例程,实现有按键输入才会打印,薄膜键盘接口处表明了1-8接口,对应PC0-7接口. 下载地址:htt ...

  2. stm32 pwm播放wav格式音乐移植遇到的问题

    前言 初识pwm的时候就想做音乐播放器,奈何51单片机速度慢,现在入手stm32,可玩性一下提高了很多,重拾当年挖的坑.既然要造轮子,那肯定先看看大牛是怎么做的.传送门:https://github. ...

  3. STM32之内部FLASH例程

    #include "stm32f10x.h" #include <string.h>/* STM32 内部 FLASH 配置 */ #define STM32_FLAS ...

  4. STM32蜂鸣器播放音乐实例项目 【评论区留言领取项目资料】

    本文用STM32单片机蜂鸣器来演奏音乐,用的开发软件是STM32CubeIDE. 实验效果 蜂鸣器 有源蜂鸣器 内部有震荡源,只要通电就会有响声,但是声音频率固定. 无源蜂鸣器 内部不含振荡源,蜂鸣器 ...

  5. STM32蜂鸣器播放歌曲《小星星》

    一.芯片选择及配置 利用STM32Cube软件配置芯片并生成Keil文件.(需要提前配置环境,没有此软件可以跳过此步 ) 选用SMT32F103RB芯片 配置完成,点击此处生成Keil文件. 二.ke ...

  6. STM32之CAN总线例程

    #include "stm32f10x.h"/* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus;/ ...

  7. STM32之SPI主机例程

    #include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config(void) {  ErrorStatus HSEStartUpStatus ...

  8. STM32之串口DMA例程

  9. STM32之外部中断例程

    外部中断的基本步骤如下: 1.设置好相应的时钟: 2.设置相应的中断: 3.IO口初始化: 4.把相应的IO口设置为中断线路(要在设置外部中断之前)并初始化: 5.在选择的中断通道的响应函数中中断函数 ...

最新文章

  1. exchange 2010备份及恢复
  2. OpenStack Nova 计算节点的维护模式
  3. “解剖”HIGO徐易容:关于创业、后悔、喝酒和滑雪
  4. Keepalived双机热备
  5. false shell 判断_Shell 流程控制
  6. maya计算机内存不足请保存,Maya内存不足不能渲染怎么优化场景?
  7. NotificationManager: notifyAsUser: tag=null, id=6, user=UserHandle{0}
  8. LeetCode 327. 区间和的个数(multiset二分查找/归并排序)
  9. 分段函数if语句_S0A1 Geogebra新手课:分段函数的绘制,以一次函数方案选择为例...
  10. Linux中tty、pty、pts的概念区别
  11. [转载] Python: ord()函数
  12. 写出一手烂代码的 19 条准则!
  13. 动画效果之时间轴对象构造器(即逐个执行动画)
  14. Java实现常用的三种加密算法详解
  15. 飞机大战java实训报告_java飞机大战实训报告.docx
  16. logback自定义日志配置
  17. 2022-03-02 组建raft集群实战及日志复制与主从切换调研
  18. Scratch精通之侦测的使用
  19. 如何在vscode上调试php,如何用vscode进行单步调试
  20. 购买云服务器如何选择cpu与内存搭配

热门文章

  1. wps带阴影的边框怎么设置_怎么把表格加框_win7系统下wps设置阴影边框的方法
  2. 实验2:Android UI-聊天界面
  3. PTA 习题7-3 判断上三角矩阵
  4. SpringBoot + Vue + ElementUI 开发的后台管理系统
  5. 三维数组中以行优先和以列优先处于相同存储位置的判别
  6. Linux联网,自用
  7. basic4android java_bASiC4Android开发教程介绍.pdf
  8. 集团---公司---公司代码
  9. CSS 手写加号和减号
  10. wow 正在登陆服务器 就未响应,魔兽6.1游戏启动慢魔兽世界未响应解决方法