历史上的今天
今天是:2025年01月11日(星期六)
2021年01月11日 | 迁移微雪2.9寸电子墨水屏代码到Stm32F407上
2021-01-11 来源:eefocus
墨水屏是从立创商城上买的,正常价格大概100元左右。 商城活动 大约 40块钱入手

这是刚来的时候的样子,排线让我弄丢了,直接拆了插槽 把杜邦线焊上去了、、、、
这是 运行demo 时候的样子

墨水屏看起来真的很好看。 进入正题,代码的迁移:

毫无疑问第一步肯定是修改 IO了,我在 readme 文件里面看到了引脚的定义。 这款屏一共用到了六个IO 其中四个是通用IO
两个是作为 SPI协议的 MOSI 和CLK线的 虽然这款屏是标准的 四线SPI,但是屏幕貌似是不需要给单片机回传什么数据的,所以我们只是需要用到 MOSI 和clk线,当然 CS 和GND 也少不了的。在STM32F4的程序中,我借鉴了 正点原子的 SPI实验,其中对于SPI的配置是用的 SPI1 对应IO 分别是 PB3 PB4 PB5 ; PB3是CLK; PB5 是 MOSI ; PB4 暂时没有用到。
通用IO方面没什么好说的,就是拉高拉低,我在最小系统板上面选取了几个 相对不是很重要的,距离PB3 PB5 比较近的IO


避开了可能用到的 PD2 和PD5 我选择了 PD0 PD1 PD3 PD4 这四个通用IO 作用如下


初始化代码如上,其中要注意的是 busy 引脚是输入引脚, 单片机需要读取这个引脚的状态判断 墨水屏是否忙
其余引脚是输出引脚。
针对于官方给出的 一些IO操作的部分,我给修改成了 寄存器的位带操作。

因为我只用一款屏幕所以没有去考虑后期的迁移等问题。。。 这里只是简单粗暴的修改了最底层的 IO操作代码
这里 有一点和官方的有一点区别

针对于官方代码的 UBYTE 我没有使用 宏定义去修改 而知直接查找 替换。。。 这一点确实有一点欠考虑了 以后代码可能会比较混乱吧
官方的debug 语句 我感觉用不上,也懒得去删除 于是 我用了这种方法
这里切记一点就是不要去替换 整个工程!!!这里切记 会出很多错误的! 你猜我咋知道的。。。
在处理完了这一部分的问题以后 接下来的问题就是 官方代码的编码风格。

这样的编写代码的方式,我一开始 并不知道怎么去解决,只能 一个一个的去改,将变量的声明拖到代码的头部去。在写这篇博客的时候才发现了原来是这里!

官方的代码,勾选了C99 的格式、、、、 而且编译起来确实是没有问题的
当我发现 可以通过勾选这个 C99 解决问题的时候我已经完成了 将变量声明拖到 函数前面去。 这算的上是一个新的发现。
接下来 我又遇到了报错

bing 上搜索了一下 发现了我想要的答案 解决方法连接

这个问题解决了,问题产生的原因大概就是因为官方代码里面的调试部分 printf 出了问题。
接下来的一个问题时程序不运行发现程序卡死在串口的发送部分, 得了 调试屏幕用到的串口还没初始化
初始化完了串口 程序总算是可以跑起来了
串口调试起来还确实是挺方便的,我之前一直都用OLED作为调试工具的,看样子以后要多试试串口
接下来出现的问题是这个

通过查找问题 错误提示 我找到了问题所在,官方代码还非常好心的提示了可能会有堆内存不够的情况


我还特意去搜了一下 堆和栈的区别 

很明显 这里是 malloc 肯定用的是堆内存 heap
总结: 今天遇到的bug 主要是 程序的编译部分, C99 这个问题可以避免
另外就是 UBYTE 转换成 u8 今天做的欠考虑了 可以直接宏定义转的
然后就是堆栈 堆是程序员 可以分配的,栈是编译器操作的
欢迎指出问题,如果您在迁移代码时候遇到了问题我也会尽量帮忙。
后续可能会考虑迁移一些其他的代码进去,比如显示 double HEX bin 之类的数字,暂时还是就这样吧,有需求了再去尝试
史海拾趣
|
通过使用电池实现在任何地方的移动使用是笔记本电脑区别于台式机的一个重要特征,相比起手机和PDA的耗电量,笔记本电脑的电池是很“可怜”的,要负担大尺寸的TFT,高速的硬盘,高主频的CPU和越来越大的内存,因此电池使用时间和PDA或者手机是不能相 ...… 查看全部问答> |
|
文 摘 提出了一种新的以基音周期为基础的分析方法。对语音信号,首先估计基音轨迹,即基音随时间的变化规律。然后根据这一轨迹对语音信号进行“基音调整”,将原始的、具有时变基音周期的信号转化为一个具有恒定基音周期的信号。这样就可以采用时 ...… 查看全部问答> |
|
我用cypress的68033做了一块板子,控制nandflash实现一个u盘。 在用三星kf1g08u0a型号的flash时,功能正常,可以读写,格式化。 当换成另一型号的kf1g08u0b的flash时就不行了,不能格式化,可以看到盘符。 不知道什么原因,flash在固件里需要配 ...… 查看全部问答> |
|
前几天,在跑程序的时候遇到一个zbuf的异常,vxworks打印的调用链如下: data storage Exception current instruction address: 0x0050cb60 Machine Status Register: 0x00029230 Data Exception Address Register: 0x0069bf38 Condition ...… 查看全部问答> |
|
是这样的 ,有个读写器有gpio接口,它是10个接口, 另外我想用这个东西来控制三色报警灯(三个颜色,另外可以报警)。 请问这个东西如何接线,来控制我灯的四个状态。 gpio有四个输入口和四个输出口,我 ...… 查看全部问答> |
|
本人写了一段代码,能把数据往当前焦点处输入: INPUT Input; for( i=0 ; strInfo!=\'\\0\' ; i++ )//strInfo已经付值 ...… 查看全部问答> |




