各位大佬,有STC32的ADC-DMA的范本吗?我是模拟电子专业对编程只懂皮毛,项目需要以前都是用范本移植.谢谢! ...
你点开本页头部左侧的“官网”,在官网页面头部点开“应用方案”可以看到几个“实验箱的资料,根据你用到的芯片下载代码就好了。
应用方案-深圳国芯人工智能有限公司 (stcai.com)
乐此不疲 发表于 2022-12-14 12:35
你点开本页头部左侧的“官网”,在官网页面头部点开“应用方案”可以看到几个“实验箱的资料,根据你用到 ...
谢谢! 还真不知道原来还能在这里拿到资源范本,之前一直只在ISP程序和百度程序范本,太亏啦... 本帖最后由 乘风飞扬 于 2022-12-16 19:37 编辑
乐此不疲 发表于 2022-12-14 12:22
执行函数中有启动传输的代码的。我目前只是在验证例程,所不同的是例程驱动的是8位并口TFT,而我是通过修 ...
例程使用的LCD屏的分辨率是320*240的,1个点RBG565格式包含2个字节数据,所以刷新一整屏的数据量 320*240*2=153600字节,DMA一次传输的数据长度设置2048字节,153600/2048=75,也就是使用DMA一包一包的传输数据,刷新一整屏需要搬运75次,所以 LCD_Fill 函数里面设置 index = 75。DMA中断函数里面每完成一次传输,index--,当 index==0 时说明153600字节全部发送完毕,就可以设置 DMA_LCM_CR = 0; LCD_CS=1; 停止传输,否则的话说明传输还没完成,DMA_LCM_CR = 0xa0; 继续下一包DMA的数据传输。
你修改的DMA中断函数里面,只对 index-- 没有再次启动DMA传输(DMA_LCM_CR = 0xa0),所以只发送一次就停止了。没有启动DMA传输就不会再产生DMA中断,LCD_CS 就不会被置1,所以就卡在 LCD_Fill 函数里了。 分析专业到位 乘风飞扬 发表于 2022-12-16 19:28
例程使用的LCD屏的分辨率是320*240的,1个点RBG565格式包含2个字节数据,所以刷新一整屏的数据量 320*240* ...
多谢临帖,你说的“只对index--没有再次启动DMA传输----”是否是指在中断函数中没有启动再次传输?
我的LCD_Fill函数中的最后三条代码如下:
LCD_CS=0;
DMA_LCM_CR = 0xa0;
while(!LCD_CS);
这其中是有这条启动代码的,我的理解是,这个函数是在主函数的主循环中运行的,每次中断响应后就开始发送2048个数据,发送完成后清除中断标志返回断点处仍然是主循环中,主循环会再次执行LCD)_Fill函数的,此时如果index不是0的话就会再次在此函数中执行DMA_LCM_CR=0xa0这一句代码的,直到index=0时在中断函数中将LCD_CS置1让主循环停止在 while(!LCD_CS);这里。 乐此不疲 发表于 2022-12-17 12:19
多谢临帖,你说的“只对index--没有再次启动DMA传输----”是否是指在中断函数中没有启动再次传输?
我的L ...
LCD_Fill函数中的最后三条代码如下:
LCD_CS=0;
DMA_LCM_CR = 0xa0;
while(!LCD_CS);
while(!LCD_CS);----这条指令如果 LCD_CS 一直等于0的话,就是一个死循环,不能继续往下执行,也就不会回到主循环的。
这条指令需要 LCD_CS == 1 才能继续往下执行回到主循环,而中断里需要执行 75 次DMA_LCM_CR = 0xa0; 才能使 index = 0,才能使 LCD_CS = 1。这样就产生了死锁的矛盾,导致程序卡死在 while(!LCD_CS);
乘风飞扬 发表于 2022-12-17 12:51
LCD_Fill函数中的最后三条代码如下:
LCD_CS=0;
DMA_LCM_CR = 0xa0;
非常感谢你帮我找到了问题的症结,就是这句while(!LCD_CS),程序确实卡在了这里,去掉!后就豁然开朗了,再谢! 还是建议楼主 去 STC 领取 1个 免费+包邮 送的 STC-USB Link1D,
用仿真的方式来调试开发, 淘宝也才 RMB35
https://www.stcaimcu.com/data/attachment/forum/202212/08/212516t1o5odyi5dii5m51.png
https://www.stcaimcu.com/data/attachment/forum/202212/08/212550deann7nc6mrxnneb.png
STC-USB Link1D 可以支持 SWD仿真,
在线下载-自动停电/上电,脱机下载-自动停电/上电,6M bps 下载速度,传输无延迟
及 扩展的 USB-CDC 串口
STC-USB Link1D= SWD仿真 + USB-CDC 串口
STC-USB Link1D= USB-CDC 串口1 + USB-CDC 串口2
STC-USB Link1D= U8W-Mini + USB-CDC 串口
【新提醒】STC32+STC-USB Link1D 仿真流程介绍 - 编译器/仿真器/ISP下载/做自己的ISP - 国芯论坛 - Powered by Discuz! (stcaimcu.com)
STC-USB Link1D工具SWD仿真STC32G12K128,同时第二组串口跟被仿真的MCU的串口1/2/3/4通信
http://www.stcaimcu.com/data/attachment/forum/202212/13/131248b65pb8a53um4jlb0.png
页:
1
[2]