本帖最后由 panxiaoyi 于 2025-3-30 18:38 编辑
CH32V103 的 SPI+DMA 的状态寄存器请教:
这个代码是驱动ST7789彩屏的,采用硬件16位SPI+16位DMA传送显示的数据,指令数据由8位SPI查询死循环等待传送。
代码逻辑是:
设置显示坐标
SPI+DMA传送数据
查询等待传送结束
返回再次循环。
代码如下图:语句28 的 while() 和 语句29 同时移动(语句29可以删除)
如果不移动,保持在位置1,功能正常;(彩屏半个屏幕颜色不断的变化)
如果移动到位置3,功能正常;
如果移动到位置2(我就是想移动到这里),功能不正常!(屏幕只有最开始的3个像数点的颜色在变化,就是说SPI的DMA看上去只传输了3个16位的数据就结束了)
我的意思是,语句35填充颜色函数,SPI启动DMA后(示波器观察大约需要60ms传送完成),我就不想死循环的等待,下次需要 SPI 时再判断再处理。
下次需要:就是再次循环到语句32设置显示的坐标函数,于是,我在这个函数的内部的开始处,加入这个while()来判断之前的SPI是否结束,结果这个语句在这里就不正常了,请教一下大家,有空帮我看看是什么回事?
|
|