完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
写一个程序,串口收到图片,利用STemWin显示图片。程序先初始化GUI,然后进入主体,存放图片的大小设为64K.
刚开始我是直接申请了一个大数组,能完成接收和显示,但是后来考虑到数组太大,考虑到可能由于数组太大的缘故, 就尝试malloc和free函数处理一下,具体程序见下,但是调试时malloc怎么也申请不成功,总是进入GUI_Delay(1000) 我用的是STM32F429DISCOVERY,看手册片上256K,还有64MBit片外SDRAM,应该够用吧,请教一下是为什么? uint8_t * databuf; databuf = (uint8_t *)malloc(63354*sizeof(uint8_t)); if(databuf == NULL){ GUI_Delay(1000); } HAL_UART_Receive_DMA(&Uart6Handle, databuf, 63354); while(1){ if(UART_RECV_STA == 6){ UART_RECV_STA=0; GUI_BMP_Draw(databuf,50,40); break; } GUI_Delay(100); } |
|
相关推荐
7个回答
|
|
自己写个maclloc管理,参考原子的代码或者ucos或者freertos里面的,可以使用你外部的sdram。 |
|
|
|
你这malloc()直接取的堆的空间吧,你设置的堆的空间有这么大么。
|
|
|
|
哦哦,刚才我从网上查了查,注意到这个问题,可是一改 .s 文件中 heap_size 的大小,就出现好多 no space in excution regions in .ANSY selector matching ... 错误,有办法解决吗 |
|
|
|
嗯嗯,最后用的外部SDRAM. 对于RAM这块看来还真得了解一下,有几个问题还是想问一下。片上的256K是SRAM,开发板上外扩的是SDRAM,两种存储器在工作原理上有区别,速度有快慢,但同样都是作为RAM使用。刚开始我以为外接的SDRAM只要配置好后,使用上就跟片上RAM没什么区别,用来存放临时变量什么的,经过这次调试,我发现在变量上还是有区别的,这个变量要是函数内的局部变量,虽然用 attribut at 放到SDRAM上,但其实它还是在片上RAM中,只有全局变量才能放到SDRAM上,是这样吗? |
|
|
|
as2969559 发表于 2018-12-10 10:31 全局变量,堆和栈空间全部定义到外部SRAM的方法和一个配套例子 局部变量应该在默认在栈中,你参考上面的例子修改下看行不行,我没有实测过。 |
|
|
|
嗯嗯,原来是这样。 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1276 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1209 浏览 3 评论
2288 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1372 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1799 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 06:07 , Processed in 0.685253 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号