IAR 编译器的常见问题 最近因为项目需要开始使用IAR for AVR,我用的是5
40 版本的,主要是5
40 以上才包括了aTtiny87,至于安装文件和和谐文件,大家自己找吧,很好找的
编译报错如图所示: 很显然你没有使能寄存器的位定义
方法如下:Project ——> Option ——> General Options ——> System(如下图所示),勾选 Enable bit definitions in I/O-Include files 即可 2
MCU 型号选择 如果和我一样都次都是以空工程创建的话,不过忘了第一步先进Project ——> Option ——> General Options ——> Target选择所使用的MCU 型号,不然编译免不了要报错,如下图所示
堆栈大小 今天下午编译一个程序,0 错误 0 警告,挺好,可一运行就跑飞,根本不能正常运行
其实是我没有正常设置堆栈大小导致的这种问题,尤其是在写大工程时,这种错误出现的概率很高
GCC 和IAR 分配堆栈的方式不同,IAR 先分配堆栈空间,相当于定义一个全局数组为堆栈空间,堆栈初始为堆栈空间最高地址;GCC 不用先分配堆栈,自动把 RAM 剩余空间作为堆栈空间,堆栈初始为 RAM 最高地址
先编译看看自己的程序用了多少 ram,在看看总共有多少 ram
然后 Project ——> Option ——> Linker ——> List选择生成 LIST 文件,并包含stack 选项,如下图所示
/Debug/list 目录下,得到
map(可能是
lst 等其他格式)文件,用记事本打开,找到以下内容: **************************************** * * * CALL GRAPH * * * *************