历史上的今天

今天是:2024年11月18日(星期一)

2019年11月18日 | 对编译器的选择

发布者:SparklingRiver 来源: 51hei关键字:编译器  单片机  hex文件 手机看文章 扫描二维码
随时随地手机看文章

一般来说,单片机的使用要从基础的汇编语言开始讲起,即使使用C语言进行开发,也必须对内部的机器码实现非常熟悉,才能应付设计和调试中可能出现的各种情况。WINAVR是个免费的AVR 开发程序集,它以著名的自由软件GCC 为C/C++编译器。之所以选用WINAVR,是因为它是一组开放源代码的程序集,也是目前最好的自由软件之一。   下面是关于WINAVR的使用要点,更详细的情况建议参考芯艺的《AVR 单片机GCC 程序设计》。开发工具:

更适合采用高级语言开发是AVR 单片机最初设计时的目的之一。目前AVR 单片机高级语言发发工具主要有IAR C、WINAVR、ICCAVR、CodeVision、BASCOM-AVR(BASIC 语言)。IAR 是与AVR 内核协同开发的,很多对AVR 更适合C 语言开发方面的改进是根据IAR开发过程的,它也是ATMEL 公司推荐的C 语言编译器,但它的价格几呼让人难以接受,达到上万元人民币。ICCAVR 是国内AVR 主要推广单位双龙公司代理的C 编译器,它价格低廉,友好的界面把很多烦琐的项目管理和编译设置隐藏了起来,为此它受部分开发人员的欢迎。


CodeVision 也是个很不错的C 编译器,目前在国内也有一定数量的用户。Winavr 是个免费的AVR 开发程序集,它以著名的自由软件GCC 为C/C++编译器。下面所有章节我都会介绍如何使用WINAVR 开发AVR 单片机。GCC 编译器UNIX 上最原始的C 编译器叫CC(C Compiler C 编译器),源于此GNU 的C 编译器叫作GCC(GNU C Compiler),然而,随着GCC 支持语言的增加GCC 这个缩写的意义已演变成了GNU 编译器集合(GNU Compiler Collection),它是GNU 项目的一个产品,是个开放源代码软件。GCC 可编译多种语言,目前支持的语言有C、C++、Objective-C、Fortran、java 和Ada。这些高级语言程序通过编译程序前端(front-end)后产生解析树,之后与器件相关的后端(back-end)程序将它们解释成实际的可执行指令集。前端与后端是完全分开的,解析树是它们中间的产物。GCC 这样的设计使得任何一种语言只要通过合适的语法解析器产生符合格式的解析树,就可以产生GCC 后端程序所支持的所有器件上的可执行指令集。同样的,任何一种器件只要将树结构翻译成汇编,就可以使用GCC 前端所支持的所有语言。要承认的是,以上描述是理论化的,便于理解,实际操作并没有想象的那么简单。事实上前端和后端都不是孤立的。幸运的是AVR 的确得到了GCC 的支持,它也是GCC 支持的唯一一种8 位处理器。不仅如此,我们还可以在WINDOWS 平台上安装程序包WINAVR 来使用GCC 的AVR C/C++编译程序。


WINAVR 是一组开放源代码的程序集,用于ATMEL 公司 AVR 系列单片机的开发,它主要包含:

1. GNU 程序包Binutils

GNU Binutils 非常庞大,WINAVR 仅包含与AVR 相关的部分,有AVR 汇编器、连接器以及与机器指令相关的一些工具

2. GNU GCC 的C 和C++编译器。

3. AVR-LIBC

AVR-LIBC 是AVR 单片机C 运行时库, 它是为应用程序提供标准C 函数的连接时定位库。

          

另外WINAVR 还包含软件调试器、器件编程软件、文件格式转换工具等多个有用工具,这里不一一列出, 请参考WINAVR 说明文档。WINAVR 项目的WEB 地址是http://sourceforge.net/projects/winavr ,这里可以下载最新的版本,并可订阅邮件组。 邮件组是获取WINAVR 相关帮助信息的重要途径。一个简单的例子文件demo1.c :#i nclude

int main( void )

{

unsigned char i, j, k,led=0;

DDRB=0xFF;

while (1)

{

if(led)

PORTB|=0X01;

else

PORTB&=0XFE;

led=!led;

//延时

for (i=0; i<255; i++)

for(j=0; j<255;j++)

k++;

}

}

这是一个使接在PB0 口的LED 发光管闪烁的程序。使用Mfile 生成合适的makefile然后运行make all即可生成hex文件。


关键字:编译器  单片机  hex文件 引用地址:对编译器的选择

上一篇:AVR 单片机初值计算
下一篇:atmega8l直接驱动笔段式lcd驱动程序

推荐阅读

2018年双十一购物狂欢节尽管已经收官,但商品的配送仍然热火朝天,为了让剁手党们尽早拿到快递,快递员真的很辛苦,“双十一派件高峰,小哥熬夜抢快递柜”,“快递员三天两夜睡了不到8小时的觉”,这一类的新闻层出不穷。 最后一公里的快递配送难题如何解决,是各大物流最大痛点。人口红利消失,人力成本飙升的当下,单纯的靠招聘快递员已经不能满足配...
英飞凌科技公司开发了用于电子身份证件(eID)的SECORA ID安全解决方案。 SECORA ID可以在智能卡和其他小型设备上运行基于Java Card的应用程序,从而简化了eID解决方案的设计,测试和部署。即插即用的SECORA ID解决方案将英飞凌的安全芯片与软件结合在一起。可以根据国家eID计划的特定要求以及从电子健康卡和eDriver许可证到结合身份识别,付款和公共...
针对ISO7637对汽车电子设备在电源上的抗扰度要求,这里浪拓给出一个合理的12V电源系统方案。浪涌保护包括一个PPTC和TVS管,可以有效抑制类似于脉冲5的干扰。PPTC是热敏电阻器,电阻随温度升高而增加。TVS是瞬态电压抑制二极管,其具体选型原则后面详细介绍。当有脉冲5干扰进入电源线路时,TVS会动作,对流向后端电路的瞬间电流进行分流,而受保护的后端电...
5G发展势头强劲,5G毫米波(mmWave)频段提供了丰富的频谱,以支持极高的容量、高吞吐量、低时延及数量不断上升的5G毫米波设备,包括手机、笔记本电脑等等。然而,在网络速度、带宽和同步方面,最新5G网络对测试和表征的需求要比上一代网络呈指数级提高。这要求测试新技术和新器件,包括多输入多输出(MIMO)天线阵列,高GHz毫米波频率信号测试和生成。我们经...

史海拾趣

问答坊 | AI 解惑

紧急求助

寻找关于用电容式传感器设计的粮食水分检测的电路等资料~~~~请联系~ yinge_007.student@sina.com…

查看全部问答∨

有用过Android的朋友吗,该怎么学

如题。Android挺火的,不知道如何入手。请教了…

查看全部问答∨

找到一个EAGLE的使用窍门

我发现一个窍门,在EAGLE的原理图编辑器或者PCB编辑器的命令框输入Run Designlink,就会弹出一个产品搜索工具,可以输入产品编号来搜索你要的产品有没有货,价格好多等等信息。但是可惜不能通过双击搜到的产品来直接在电路图中放元件,如果有这个功 ...…

查看全部问答∨

负的AVss怎么处理?

我用dsPIC30F2012做一个A/D转换,正参考电压接在Vref+上,负参考电压接在Vref-上,VCC经过滤波后接在了AVDD上,现在AVss不知如何处理,因为要求转换的电压是有负电压的,我能不能直接将AVss接地。A/D转换的参考电压选用的是Vref+和Vref-。请前辈高 ...…

查看全部问答∨

请问mpc860cpu 狗复位的等待时间是多少

请问mpc860cpu 狗复位的等待时间是多少,如何配置这个时间…

查看全部问答∨

VS2005新建CE6.0工程的问题

file -> new -> project -> platform builder for ce 6.0 输入工程名后,点击OK windows embedded ce 6.0 os design winzard next  -> 选中一个BSP后点击next -> 选中 PDA device后点击next  -> 一路next下去 ...…

查看全部问答∨

开发一个PDA问题

  要开发一个PDA   的应用程序,这PDA支持   Windows   Mobile   5.0   用 vs2005  ,只能用   vc.net     吗?     vb ...…

查看全部问答∨

STM8S的硬SPI通不过

选择HSI做为主时钟,16MHz void CLK_Init(void) {     CLK_DeInit();     CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); } //SPI初始化 void SPI_MyInit(void) {     SPI_DeInit();     ...…

查看全部问答∨

求xilinx高手指点

 刚开始学xilinx,现在有很大问题解决不了,求高手指点,能不能留个QQ,在论坛里交流不方便,贴图很麻烦。QQ:707587938谢谢 …

查看全部问答∨

LaunchPadFirmwareUpdater2.0

------------------------------------------------------------------------------- Readme file for LaunchPadFirmwareUpdater2.0.exe LaunchPadFirmwareUpdater2.0.exe is a GUI based utility to update the emulator firmware of Texas Ins ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved