有人使用STM32H743芯片做应用开发,遇到个比较奇怪的事情。事情是这样的,他使用ST公司的图形化配置工具STM32CubeMx进行基本配置后,如果基于ARMMDK IDE创建工程并组织代码,编译除错后运行一切正常。但如果他基于IARIDE创建工程并使用相同的用户代码时,发现程序没法正常运行,同时还没有任何报错。颇为奇怪。
经进一步了解。他的代码要实现的一个主要功能就是ADC,并利用通用DMA将ADC结果搬运到内存。现在最明显的问题就是,当把IDE从MDK切换到IAR后,ADC的结果没有被搬运到内存。借助调试可以确认,ADC外设确实启动了、DMA配置也没有问题,那到底怎么回事呢?两个环境下的外设配置及用户应用代码是完全一样的。
借助调试,在调试过程中无意发现了一点点差异。那就是两个IDE分别为存放ADC结果的内存安排的地址不一样。下面两幅截图来自ARMMDK和IAR环境下存放ADC结果的内存地址。


不难看到,在MDK环境下,内存地址安排在0x2400008c开始的地方,而在IAR环境下内存地址被安排在0x20000084开始的地方。难道问题就出在这个地方?
------正是!
我们先查看STMH7参考手册,看看上面2个地址位于哪些内存区。

也就是说,IAR默认将存放ADC结果的内存安排在DTCM区,而MDK将其安排在AXISRAM区。我们可以查看手册得知,H7系列的通用DMA1或DMA2是没法访问DTCM的。DTCM只能被内核或MDMA访问。


上图中的短横杠表示不可访问。原来是这样,难怪编译过程中没有任何报错提示,只是所选DMA硬件上不支持对DTCM的访问而已。
既然知道了原因,问题就好解决了。我们可以在IAR环境里直接给定存储地址,能让DMA访问到就行。或者在IAR调试环境下修改内存使用的默认地址于AXISRAM区.
关键字:IAR IDE 创建工程 运行
引用地址:
基于IAR IDE创建工程程序不能运行怎么解决
推荐阅读最新更新时间:2026-03-22 11:12
基于IAR IDE创建工程程序不能运行怎么解决
有人使用STM32H743芯片做应用开发,遇到个比较奇怪的事情。事情是这样的,他使用ST公司的图形化配置工具STM32CubeMx进行基本配置后,如果基于ARMMDK IDE创建工程并组织代码,编译除错后运行一切正常。但如果他基于IARIDE创建工程并使用相同的用户代码时,发现程序没法正常运行,同时还没有任何报错。颇为奇怪。 经进一步了解。他的代码要实现的一个主要功能就是ADC,并利用通用DMA将ADC结果搬运到内存。现在最明显的问题就是,当把IDE从MDK切换到IAR后,ADC的结果没有被搬运到内存。借助调试可以确认,ADC外设确实启动了、DMA配置也没有问题,那到底怎么回事呢?两个环境下的外设配置及用户应用代码是完全一样的
[单片机]
MPLAB X IDE V4.15 创建工程,编译,问题处理
初步接触,有错误的地方还请大神们务必提出来,防止误导他人 硬件环境:MCU--PIC18F67K22 仿真下载器--ICD 3 编译环境:MPLAB X IDE V4.15 中文版 工作需要接触到了PIC的一款MCU,以前使用PIC单片机的时候使用的是MPLAB IDE,运用起来相对比较简单,和KEIL5,IAR等有点相似。但是现在应用的这个编译环境就有很大的差别了。初次接触有种完全摸不到方向的感觉。 首先讲一下,我工程建立和过程中遇到的问题。 “文件“-》“新建项目”- 选择项目------------“Microchip 嵌入式”- “独立项目” 选择器件------------“All Famil
[单片机]
中科芯与IAR共建生态合作,IAR集成开发环境全面支持CKS32系列MCU
中国上海 – 2023 年 1 0 月 18 日 – 嵌入式开发软件和服务的全球领导者IAR今日宣布,与中科芯集成电路有限公司(以下简称中科芯)达成生态合作,IAR已全面支持CKS32系列MCU的应用开发。这一合作将进一步推动嵌入式系统的发展,并为开发者提供更完整、高效的开发解决方案。 IAR Embedded Workbench集成开发环境一直是全球众多开发者首选的嵌入式软件开发解决方案之一。 这一强大的工具套件已全面支持中科芯CKS32系列MCU,为开发者提供了无与伦比的支持。通过该解决方案,开发者可以充分利用代码优化功能,同时还享有一系列强大的调试功能,包括代码和数据断点、运行时堆栈分析、调用堆栈可视化等。此外,IAR
[嵌入式]
国民技术与IAR展开生态合作,IAR集成开发环境全面支持N32系列MCU
IAR Embedded Workbench for Arm集成开发环境现已全面支持基于国民技术N32 G/L/WB/A等工业与车规MCU的应用开发 中国上海——2023年6月13日——嵌入式开发软件和服务的全球领导者IAR近日发布的集成开发环境IAR Embedded Workbench for Arm9.40版, 已全面支持国民技术N32系列产品 ,其中包括基于M4内核的N32G452、N32G455、N32G457、N32G4FR、N32WB452、N32G432、N32G435、N32L436、N32L406、N32G430、N32G401系列MCU和N32A455系列车规MCU,以及基于M0内核的N32G031、N
[嵌入式]
IAR for Arm集成开发环境全面支持芯驰科技9系列SoC和E3系列MCU
IAR Embedded Workbench for Arm集成开发环境已全面支持芯驰科技9系列SoC和E3系列MCU 最新版 IAR Embedded Workbench for Arm 全面支持芯驰科技9系列SoC和E3 MCU 芯片,帮助中国汽车行业开发者打造强大的嵌入式开发解决方案 中国上海—2022年6月17日——全球领先的嵌入式开发软件工具和服务提供商IAR Systems日前宣布:其最新发布的IAR Embedded Workbench for Arm 9.30版本已全面支持芯驰科技9系列SoC和E3 MCU芯片。 国内领先的车规芯片企业芯驰科技致力于为未来智慧出行提供高性能、高可靠的车规芯片
[嵌入式]
MSP430集成开发环境之IAR
MSP430集成环境之IAR System IAR是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。 公司总部在北欧的瑞典,在美国、日本、英国、德国、比利时、巴西和中国设有分公司。它最著名的产品是C编译器-IAR Embedded Workbench, 支持众多知名半导体公司的微处理器。许多全球著名的公司都在使用IAR SYSTEMS提供的开发工具,用以开发他们的前沿产品,从消费电子、工业控制、汽车应用、医疗、
[单片机]
程序换个IDE就不运行了?
有人使用STM32H743芯片做应用开发,遇到个比较奇怪的事情。事情是这样的,他使用ST公司的图形化配置工具STM32CubeMx进行基本配置后,如果基于ARM MDK IDE创建工程并组织代码,编译除错后运行一切正常。但如果他基于IAR IDE创建工程并使用相同的用户代码时,发现程序没法正常运行,同时还没有任何报错。颇为奇怪。 经进一步了解。他的代码要实现的一个主要功能就是ADC,并利用通用DMA将ADC结果搬运到内存。现在最明显的问题就是,当把IDE从MDK切换到IAR后,ADC的结果没有被搬运到内存。借助调试可以确认,ADC外设确实启动了、DMA配置也没有问题,那到底怎么回事呢?两个环境下的外设配置及用户应用代码是完全一
[单片机]
IAR程序在protues上运行设置
第一步:在IAR中编写430程序: 为了便于实现和理解,我的例子比较简单,程序将P3OUT中的数据传给P2IN,然后再把P2IN中的数据给P1OUT,最后输出到LED灯,程序如下: #include msp430x14x.h int main( void ) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P3DIR = 0xff; //P3设置为输出,P2设置为输入,P1设置为输出 P2DIR = 0x00; P1DIR = 0xff; P3OUT = 0x4a; //P3输出灯的控制信息,并通过连线传给P2IN P1OUT =
[单片机]