高级会员
- 积分
- 948
- 金钱
- 948
- 注册时间
- 2022-4-20
- 在线时间
- 356 小时
|
20金钱
每天都在学习,每天都能遇到疑难杂症,大部分网上一搜都能搜出来,实在解决不了了就只能靠各位大佬出手了。
程序来源于正点原子的串口寄存器工程,而后添加了自定义的DMA初始化,编译正常,下载时提示信息如下。
- No Algorithm found for: 90000000H - 90000107H
- Partial Erase Done (areas with no algorithms skipped!)
- No Algorithm found for: 90000000H - 90000107H
- Partial Programming Done (areas with no algorithms skipped!)
- Partial Verify OK (areas with no algorithms skipped!)
复制代码 主程序如下:
- int main(void)
- {
- Stm32_Clock_Init(160,5,2,4); //设置时钟,400Mhz
- delay_init(400); //延时初始化
- uart_init(100,115200); //串口初始化为115200
- DMA_Init();
- while(1)
- {
- if (USART_RX_STA & 0x8000)
- {
-
- }
- else
- {
-
- }
- }
- }
复制代码
问题描述:
进入调试单步走,在DMA初始之前一切正常,进入函数后跳转至如下图地址:
地址恰好是下载时的信息提示被跳过的地址。即使后来删除DMA初始化函数内所有代码也依然跳转到这个地址。在主函数删除初始化之后,下载无提示,程序正常跑通。
在网上查找解决办法,说的是改仿真器下载算法,但是几番操作之后还是没效果。按理来说,编译过后的初始化函数不应该在这个地址,我就想着会不会是我加入的
DMA初始化函数的问题,于是我直接用原子的DMA工程进行下载,结果是下载时提示内容一样,仿真时现象一样。
今日在线等待大佬解答,感激不尽。谢谢。
|
最佳答案
查看完整内容[请看2#楼]
搞定了,魔法棒里的Linker设置页面的Use Memory Layout from Target Dialog 勾选上之后,DMA的初始化函数就不再会跑到90000000的地址了,下载程序也正常了
|