导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→《AVR-GCC与AVR单片机C语言开发》一书已经正式出版[guest]

 *第27078篇: 《AVR-GCC与AVR单片机C语言开发》一书已经正式出版

  
楼 主:guest 2004年10月26日10:48
 《AVR-GCC与AVR单片机C语言开发》一书已经正式出版
在这里贴出内容简介和目录
欢迎到我们的网
内容简介     本书以AVRGCC的Windows版本WinAVR20040404为例,介绍使用AVR-GCC开发AVR单片机的方法。首先介绍AVR单片机的特点,使读者对AVR单片机有整体的印象。随后简单地介绍了C语言的语法和AVR-GCC的函数库avr-libc的常用库函数及定义。接下来以ATmega16单片机为例,介绍了AVR单片机常用部件的操作方法。最后,介绍了运行于AVR单片机上的实时操作系统AVRX的使用方法和AVR单片机的调试方法,以供更高层次的读者参考。

    本书适合于有一定单片机基础或者了解一定C语言知识的单片机爱好者、工程技术人员和大专院校的学生学习AVR单片机的C语言开发之用。

    本书附光盘1张,包括书中讲述的WinAVR工具套件AVRStudio,VMLAB等软件,以及Unix平台下开发需要的相关软件和资料。 
 
 

 前言     AVR单片机是ATMEL公司出品的新一代8位单片机,该单片机采用高性能的RISC内核,具有很低的功耗。AVR单片机的内核以时钟振荡器的振荡频率运行,而且绝大部分指令为单周期指令,因此AVR单片机具有非常高的指令执行速度,可达到接近1 MIPS/MHz的性能,运行速度比绝大部分单片机都要高。AVR单片机内部为高级语言进行了优化,用高级语言编写的程序可高效率地生成执行代码。AVR单片机片内集成了大容量的Flash作为程序存储器,可方便地进行改写。AVR单片机在片内集成了EEPROM存储器,可作为数据存储器,避免外接EEPROM存储器的不便。AVR单片机支持ISP功能,部分型号还支持IAP功能,提高了单片机开发的灵活性。AVR单片机很多型号具有可选择的内部振荡器,在要求不高时可代替石英晶体。AVR单片机片内集成了看门狗定时器,可防止程序在运行中跑飞。AVR单片机内部集成了多种外部设备,除了常见的定时器、捕获器、串行接口(UART或USART),很多型号还集成了TWI (兼容于I2C接口)、模拟比较器、低电压复位保护、ADC和PWM控制器;在新型号中,ATEML公司还将USB控制器、射频收发电路等集成入AVR单片机。因此,AVR单片机已经不仅仅是一个用于控制的8位单片机,在有些场合甚至可单独组成一个片上系统(SoC),完成复杂的功能。

    AVR单片机进入国内市场以来,从开始大家都不了解到现在很多人开始尝试使用它,除了该单片机本身性能上的一系列优点外,还与该单片机在开发工具上的便利和编译器的良好支持密不可分。到目前为止,AVR单片机上不仅可使用多种开发工具进行开发,而且包括了烧写器、仿真器、调试器、汇编器、高级语言的编译器、集成开发环境等全套的开发工具链。特别值得一提的是,ATMEL公司出品的免费软件AVR Studio可方便地增加外部编译器等工具,构成一个完整而廉价的集成开发环境,显示了ATMEL公司对AVR单片机强大的支持。

    用高级语言开发单片机具有一系列的优点,它可以使开发人员专注于算法本身,而不是只关心算法的实现细节。高级语言最接近于自然语言,易于理解和记忆。高级语言可方便地在不同系统中进行移植,源代码可不变或只做少量修改。对于AVR这种为高级语言进行过优化设计的单片机,高级语言生成的代码并不比汇编语言生成的代码多占用许多程序空间,执行速度也不会有大幅度的降低。相反却提高了开发的速度,减少了开发的风险,因此,在很多情况下使用高级语言开发单片机是非常有利的。

    GCC编译器最初是由Richard Stallman编写并且现在被广泛使用的C编译器,该编译器本来是GNU项目的一个组成部分。由于该编译器是自由软件,任何人都可以对其修改和传播,一部分程序员编写了GCC的函数库avr-libc,并将其移植到AVR单片机上。用于开发AVR单片机的GCC编译器称为AVR-GCC(也称为gcc-avr)。AVRGCC可自由地获得,而且并不强制收费。目前AVR-GCC可运行在多种主流的操作系统上,包括GNU/Linux,Windows,Mac OS X,Freebsd等,因此使用各种不同系统的开发人员都可以开发AVR单片机。AVR-GCC支持绝大部分AVR单片机,而且受支持的单片机数目正在不断地扩展。可以说,常用的AVR单片机都可以使用AVR-GCC进行开发。AVR-GCC的更新非常迅速,不断有补丁问世。

    笔者在一个偶然的机会接触了AVR单片机,其高速、低功耗和开发方便的优点给笔者留下了很深的印象。在随后的使用过程中,积累了一些经验,并且介绍该单片机给身边的人使用。在这个过程中,笔者看到身边的很多人对AVR单片机不很了解,甚至有一些误解。他们在学习AVR单片机时感到很迷茫,于是觉得有必要写一本完整介绍AVR单片机开发的书籍,使更多的人了解AVR单片机和AVR-GCC软件。在写书的过程中,笔者尽力做到使该书浅显易懂,并对很多初学者会遇到的问题进行了详细讲解,希望以自己的实际经历引导学习AVR单片机的初学者少走一些弯路。本书在后半部分给出了大量的实例,这些都是笔者曾经做过的代码。希望初学者能够仔细研究这些代码,因为这对于理解AVR单片机的编程方法是十分有益的。

    本书在编写过程中得到了广州双龙公司耿德根先生和北京航空航天大学出版社马广云老师的大力支持。另外,杨开老师提供了必要的实验场地及仪器,刘天祥先生提供了一套USB JTAG工具,北京航空航天大学电子信息工程学院的同学提出了许多宝贵意见,在此一并表示衷心的感谢。

    由于编者水平有限,书中难免有不妥甚至错误之处,希望读者批评指正。另外,也可在网站上直接提出建议和意见。网址是:

    考虑到国内的情况,本书未收集AVR-GCC在其他平台包括Linux,Mac OS X,FreeBSD系统上的开发方法,关于这方面的内容请读者参考附录给出的信息自行学习。

编者
2004/08/20
于北京航空航天大学 
 
 

 目录 第1章 AVR基本知识
1.1 AVR各系列单片机简介1
1.2 AVR单片机对C语言的优化3
1.2.1 寻址方式3
1.2.2 零标志位的产生4
1.2.3 算术运算的调整4
1.3 选择合适的AVR单片机5
1.4 选择合适的编程语言6
1.5 AVR单片机C语言编译器简介8
1.5.1 Codevision AVR8
1.5.2 Imagecraft C Compiler 8
1.5.3 AVR-GCC9
1.6 学习的过程10
1.6.1 开始前的准备10
1.6.2 各种有助于学习的资源11

第2章 AVR-GCC编译器及相关开发工具
2.1 WinAVR简介与安装14
2.1.1 WinAVR简介14
2.1.2 WinAVR的安装15
2.2 编辑工具PN简介19
2.2.1 PN简介19
2.2.2 用PN新建一个C文件19
2.2.3 在PN中编译源文件21
2.2.4 在PN中添加工具23
2.2.5 在PN中新建一个工程25
2.3 编译器AVR-GCC26
2.3.1 AVR-GCC简介26
2.3.2 AVR-GCC的编译过程26
2.4 Make及Makefile的结构分析29
2.4.1 Make工具简介29
2.4.2 Makefile29
2.4.3 PN中添加Make工具29
2.4.4 Makefile样例结构分析31
2.4.5 自动生成Makefile的工具——mfile39
2.5 AVR单片机仿真调试软件40
2.5.1 各种仿真调试软件的简介和对比40
2.5.2 使用AVR Studio 4进行代码级仿真41
2.5.3 VMLAB的使用48
2.5.4 GDB(AVR-Insight)和Simulavr的配合仿真方法70
2.6 PonyProg200072
2.6.1 PonyProg2000安装和使用方法73
2.6.2 如何利用PN和PonyProg2000配合下载78
2.6.3 PonyProg2000的脚本文件79
2.6.4 简易下载线的制作80

第3章 AVR单片机C语言开发入门
3.1 GNU C基本语法介绍82
3.1.1 C语言的基本结构82
3.1.2 C语言的基本字符、标识符和关键字83
3.1.3 数据类型83
3.1.4 变量、运算符和表达式86
3.1.5 条件转移和循环控制92
3.1.6 数组97
3.1.7 函数99
3.1.8 指针101
3.1.9 结构和共同体105
3.1.10 预处理110
3.2 avrlibc与器件相关的I/O定义112
3.3 avrlibc标准I/O工具113
3.3.1 常量定义114
3.3.2 函数声明115
3.4 avrlibc的常用工具123
3.4.1 数据结构123
3.4.2 常量定义123
3.4.3 函数定义124
3.5 字符操作函数129
3.5.1 字符分类函数129
3.5.2 字符转换函数130
3.6 标准字符串和程序空间中的字符串131
3.6.1 标准字符串操作函数131
3.6.2 对存储于ROM中的字符串进行操作135
3.7 引导加载程序函数139
3.7.1 Bootloader简介139
3.7.2 Bootloader函数定义140
3.8 EEPROM操作函数141
3.8.1 EEPROM简介141
3.8.2 函数声明142
3.8.3 向后兼容的定义143
3.8.4 与IAR C兼容的定义143
3.9 电源管理函数143
3.9.1 休眠模式定义143
3.9.2 支持休眠的函数144
3.9.3 降低电源的消耗144
3.10 看门狗操作145
3.10.1 看门狗操作简介145
3.10.2 常量定义146
3.11 系统错误处理147
3.12 绝对跳转指令147
3.12.1 绝对跳转简介147
3.12.2 函数定义148
3.13 中断和信号处理函数149
3.13.1 全局中断标志操作函数152
3.13.2 设置中断处理函数的宏152
3.13.3 允许某些全局的中断153
3.14 算术运算函数153
3.14.1 常量定义154
3.14.2 算术运算函数的定义154
3.15 特殊功能寄存器的操作156
3.15.1 特殊功能寄存器操作方式156
3.15.2 I/O寄存器位操作指令157

第4章 AVR单片机典型外围设备应用编程
4.1 AVR单片机的计数器160
4.1.1 计数器的事件160
4.1.2 计数器事件的处理161
4.1.3 计数器的时钟选择162
4.1.4 计数器的设置和使用164
4.1.5 使用计数器的PWM输出166
4.1.6 PWM输出实现两路DAC变换168
4.1.7 PWM输出实现正弦波输出171
4.2 A/D转换器173
4.2.1 相关寄存器173
4.2.2 A/D转换后的数据处理175
4.3 通用串行接口UART的使用182
4.3.1 传输模式的选择182
4.3.2 波特率的设置183
4.3.3 传输帧格式的设置183
4.3.4 USART的初始化183
4.3.5 发送和接收的处理方法184
4.3.6 使用实例184
4.4 SPI接口的使用和SPI接口的EEPROM186
4.4.1 SPI接口介绍186
4.4.2 SPI的传输原理186
4.4.3 SPI器件的主/从模式和设置187
4.4.4 SPI的传输模式和设置187
4.4.5 SPI主/从模式和I/O的设置188
4.4.6 SPI接口的时钟频率设置188
4.4.7 SPI接口和中断189
4.4.8 SPI接口的状态189
4.4.9 SPI传输的位顺序189
4.4.10 SPI接口基本发送和接收程序189
4.4.11 使用SPI接口的EEPROM190
4.5 I/O和中断的使用195
4.5.1 基本原理196
4.5.2 实现方案196
4.5.3 程序结构和结论197
4.6 TWI接口及其接口器件的使用199
4.6.1 I2C总线的基本知识200
4.6.2 AVR单片机的TWI接口201
4.6.3 AVR单片机TWI接口的使用202
4.6.4 用AVR单片机的TWI接口读/写EEPROM203
4.6.5 示例程序205

第5章 用AVR单片机实现的测量仪表
5.1 总体设计思路211
5.2 传感器特性曲线拟合211
5.2.1 采样数据的获得212
5.2.2 特性曲线拟合处理212
5.3 单键开关电路214
5.3.1 电路原理214
5.3.2 关于R3和上拉电阻R4的取值215
5.3.3 对VIN连接方式的处理215
5.3.4 电容C1的作用216
5.3.5 开/关机延时处理216
5.3.6 单片机程序流程图216
5.3.7 程序代码216
5.4 LCD显示模块218
5.4.1 LCD与单片机的接口218
5.4.2 printf()函数输出的重定向218
5.4.3 如何进行printf()函数输出的重定向219
5.5 自动量程选择算法220
5.6 电池电量检测224

第6章 AVRX实时操作系统RTOS
6.1 RTOS的功能226
6.2 AVRX简介227
6.2.1 任务228
6.2.2 信号量228
6.2.3 定时器228
6.2.4 消息队列228
6.2.5 单步运行支持229
6.2.6 系统对象229
6.2.7 系统堆栈230
6.3 AVRX下的编程230
6.3.1 任务的结构231
6.3.2 中断处理232
6.3.3 主函数结构232
6.3.4 编程实例236

第7章 AVRJTAG与AVR单片机仿真技术
7.1 JTAG简介241
7.2 制作简易的JTAGICE242
7.3 用JTAGICE调试AVR单片机250
7.3.1 JTAGICE的调试接口 250
7.3.2 JTAGICE与用户板的连接251
7.3.3 在AVR Studio中使用JTAGICE调试程序251附录AAVRGCC和Unix类操作系统
附录B所附光盘内容说明
参考文献 
 

此主题相关图片如下:
按此在新窗口浏览图片


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:7202开发板

[下一篇主题]:全套单片机读写优盘的技术资料