VS1053b 音频解码模块+FatFS使用小记

前几天毕设的论文总算是怼完了,难得空闲了几天,就搞了个“电子八音盒”。为啥加引号呢,因为实在太low了……

使用了一个STM32ZET6开发板,一个VS1053b,和师姐座位上拿来的USB小嘴炮。能够遍历根目录的mp3, wav, midi文件并播放,KEY1负责切歌,具体的不妨进项目看。

项目地址:https://github.com/sjx95/STM32-Muisc-Box

继续阅读“VS1053b 音频解码模块+FatFS使用小记”

在Windows下使用Git

今天讲讲如何在Windows下面使用Git。Git是个好东西,然而它最初是针对Linux开发的,因此在Windows上用起来比较麻烦。

目前我知道的方案有如下几个:

  • Github客户端:配合Github使用很方便,但需要使用SSH协议,但我在用的代理封掉了22端口,就没法用了;另外这个好像还提供一个Git Bash,没仔细研究过。
  • Cygwin+git:Cygwin是一个Unix模拟环境,用里面的Git就可以了。优点是Cygwin的工具比较多;缺点是配置好像比较麻烦。
  • msysGit:跟上面的差不多,只不过msys相比于Cygwin更小,功能更少,适合于只想Git的情况。另外已经有人帮忙打包好了,安装即可,萌新推荐

Github客户端安装使用即可,Cygwin暂时我还用不到,因此这里主要说下msysGit。其实msysGit基本安装全傻瓜化,只是需要设置编码啥的与Linux兼容。

继续阅读“在Windows下使用Git”

CP20/CICAF2017小记

CP20 – ComiCup20 @魔都 – 170501 Day2
CICAF2017 – 中国国际动漫节 @杭州 – 170430

嗯,今年五一又去逛了漫展,还逛了俩……

警告:内含原图,将消耗大量流量。

原文与图片禁止转载。
Prohibit reproduce without permission, both picture and text.

虽然这破站根本就不会有人上,我姑且还是声明一下好了。

继续阅读“CP20/CICAF2017小记”

开发日志 170424

今天把船拿到启真湖跑了跑测试,下午回来分析数据。本打算把数据在本地分析的,但无意中发现phpMyAdmin居然集成了GIS系统,MySQL本身也可以处理地理数据,那不妨就试一试。

使用INSERT INTO Table VALUES (PointFromText('Point(latitude longtitued)'));可以插入坐标点,坐标点查询时会以二进制数据的形式显示,需要用AsText()函数转换回人类友好的文本格式。哦,对了,别忘了把表的存储引擎改为MyISAM。

继续阅读“开发日志 170424”

开发日志 170421

昨天3D打印了一个安放电路板的结构件,然后发现没有树莓派用的M2.5的螺丝,赶紧网上下单然后开始码别的。

想了一下,人家MPU9250明明是有GPIO中断输出的,干啥要用延迟呢,改个中断吧,于是今天基本就折腾了一天中断。

其实中断也不是很难,用wiringPi这个库就可以了,或者BCM的那套也行。不过用了wiringPi之后执行需要root权限,让我不太高兴。Linux不是一切皆文件吗?Linux不是有GPIO子系统吗?借助这个子系统不就好了?

别说,还真有,用/sys/class/gpio/这个目录就可以了。这个要求编译内核时开启Device Drivers -> GPIO Support -> /sys/class/gpio/… (sysfs interface) 这个选项,树莓派官方镜像的内核已经开启了。

然后echo 端口号(BCM) > /sys/class/gpio/export来将这个接口从内核中暴露出来,接下来就可以通过/sys/class/gpio/gpio*/下的direction value edge这几个文件来进行输入输出和中断触发边沿选择了。

最后怎么用作中断呢?select/poll/epoll都可以了,它们会挂起线程知道文件内容改变。

另外这是我的参考文章:http://blog.sina.com.cn/s/blog_7880d3350102w2um.html

另外MPU9250还总是有零漂,我前几周调好了,今天上电一看飘了0.4dps,纠正过来后一看又漂了0.1dps,根本不知道该怎么处理。这倒还好,大不了系统启动时纠偏,但它要是走着走着飘起来了该咋办?

继续阅读“开发日志 170421”

开发日志 170415

今天处理了一下配置文件的问题,毕竟不能啥都往程序里写对吧……其实我以前一直是记好了第几行是啥,然后直接读进来。不过这样显然不太优雅,所以要用点啥格式。本来是想用GKeyFile来处理的,然后它要include一个glib.h的头文件,大蜥蜴里面这个文件有点问题,路径各种不对。JSON吧,按说不错,但是手写的话格式不是那么友好,XML就更别提了。加上之前被安利过一波YAML,就决定用它了。

YAML,说来也简单,直接安装yaml-cpp-devel就可以了,封装的很好,很方便。没用什么高级的配置,看着代码自己悟吧(滑稽

嗯……话说昨天不小心暴露了我的数据库密码,应该没关系吧?

继续阅读“开发日志 170415”

考研回顾

这篇文章,其实写的有点晚,主要是一直也懒,就拖到现在了。

我觉得,首先要感谢我的三个室友。本来我们寝室是晚睡晚起的那种,然后每天七点半闹钟响,十一点半要熄灯睡觉啥的,也是不容易。

然后还有翔哥、小机智、WHT和JPY同学,以及码龙和小郭,经常去找他们问问题。哦,对了,还有展展和田神,大作业和毕设啥的帮着顶了一堆锅……临去考试小凤还借了电动车,直接给+1s。

总的来说,一份付出一份收获,单纯指望RP大爆发啥的,基本不靠谱。当然调节RP的小技巧应该是有用的,大概……

反正也没人看,我就随便写吧……

继续阅读“考研回顾”

开发日志 170411

之前一周一直在弄I2C和UART,感觉也没做太多的东西,就没单独写,今天算是一起记了。另外今天“海试”,遥控方面没啥大毛病,船也不漏水。不过就是一次下水被水草缠住了;清理了水草第二次下水,L298N驱动芯片过热保护了,船途中失控,差点被水浇了,也挺惊险的。

看到左侧那个喷水的玩意了吗?失控后,不偏不倚就从那个水柱下面钻过去了。三个人差点吓尿了,也没想起来拍照片,可惜了xD

简单来说,树莓派的I2C和UART要用raspi-config打开,或者直接编辑/boot/config.txt也可以,然后就可以用了。然后在程序中作为文件打开,使用ioctl设定了模式,就可以简单的用read(), write()这两个函数读写了。

哦,对了,还修复了一个安卓遥控器在热点模式下不能遥控船的bug。热点模式下,受限广播似乎不会发到热点下面那个子网,而是会发到4G那边,组播224.0.0.1似乎也是。因此需要用Multicast::setNetworkInterface指定要用的网络接口,然后向224.0.0.1发送组播。

继续阅读“开发日志 170411”

开发日志 170329

遥控粗粗的可以跑通了,今天就开始做自动导航相关的东西了。想了一下,不如先处理GPS。我的GPS是串口的GPS,因此我需要一个函数,大概getline的效果差不多。

如果是STM32的话,比较简单,直接调HAL的函数来读读写写就好了;另外听说树莓派上用Python也挺方便的。可惜这次是打算用Raspberry Pi,还不能用Python,只能用C/C++。

先放出来我的参考文章,基本就按照这个配就行,另外那个cfmakeraw函数最好别用……

其实本来也没什么,不过以前C语言学的不牢,对stdio的缓冲区理解不到位,printf的时候没有\n,导致缓冲区没刷新。以前知道iostream的这个问题,但printf就没往这茬想,吃了个大亏,真是脚都要抠烂了……

既然是C++,那就封装成一个类吧(然而并没有什么卵用。

继续阅读“开发日志 170329”