- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何使用AVR-GCC
安装GNU C for AVR
一.执行安装程序
二.生成链接用的库文件
$(AVR)表示安装的根目录。(在本人系统里为f:\avrgcc )
生成库文件关键是要运行位于$(AVR)下的RUN.BAT 。原程序如下:
@echo off
if NOT %AVR%!==! goto install
rem set environment variables
set AVR=f:\AVRGCC
set CC=avr-gcc
set PATH=.;f:\AVRGCC\bin;%path%
doskey
:install
if %1!==! GOTO end
rem install libc
cd f:\AVRGCC\lib\avr-libcsrc
rem first win32_make_dirs will make some errors(I dont know why?)
make -f makefile-win32 win32_make_dirs
make -f makefile-win32
make -f makefile-win32 install
make -f makefile-win32 clean
:end
f:
cd f:\AVRGCC
mode con: lines=43
要修改为:
@echo off
if NOT %AVR%!==! goto install
rem set environment variables
set AVR=f:\AVRGCC
set CC=avr-gcc
rem set PATH=.;f:\AVRGCC\bin;%path%
doskey
:install
rem if %1!==! GOTO end
rem install libc
cd f:\AVRGCC\lib\avr-libcsrc
rem first win32_make_dirs will make some errors(I dont know why?)
f:\AVRGCC\bin\make -f makefile-win32 win32_make_dirs
f:\AVRGCC\bin\make -f makefile-win32
f:\AVRGCC\bin\make -f makefile-win32 install
f:\AVRGCC\bin\make -f makefile-win32 clean
:end
f:
cd f:\AVRGCC
mode con: lines=43
在以后的应用中,运行的是修改之前的 RUN.BAT ,但要去掉 rem if %1!==!
GOTO end 的“rem ”。去掉“rem ”之后,后续的语句将被跳过。因此MAKE 部
分的“f:\AVRGCC\bin\ ”可加可不加。
编译和链接应用程序
首先在上下载测试程序集gcctest.zip,然后安装。
1. 将GCCTEST\INCLUDE 下的MAKE1 、MAKE2 拷贝到$(AVR)\ INCLUDE
2 . 将工作目录的MAKEFILE (每个工程都要有一个此文件,且可由自己进行修
改以适合自己的应用。如果要利用原有文件,则注意只能有一个C 文件) 中
的MCU 、TRG、SRC、ASRC 、INC 、LIB 等项填入合适的内容
3 . 在工作目录运行位于$(AVR)\BIN 下的MAKE.EXE (注意:由于系统可能存
在其他应用程序的MAKE ,因此可能还需要加路径。也可以将其改名。)
4 . 从MAKE1 、MAKE2 和MAKEFILE 可以看出,用户可以修改诸如输出文件
名等多种选项。
在C 代码中嵌入汇编指令
一.GCC 的ASM 声明
首先看一个从PORTD 读入数据的例子:
asm(“in %0, %1” : “=r”(value) : “I”(PORTD) : );
由上可以看出嵌入汇编的4 个部分:
1.汇编指令本身,以字符串“in %0, %1”表示;
2 .由逗号分隔的输出操作数,本例为“=r”(value)
3 .由逗号分隔的输入操作数,本例为“I”(PORTD)
4 .Clobber 寄存器
嵌入汇编的通
文档评论(0)