2008 Microchip Technology Inc. DS51686A_CN
MPLAB
®
C32
C 编译器
用户指南
DS51686A_CN 第 ii 页 2008 Microchip Technology Inc.
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含
的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相
关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology
Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EELOQ、 KEELOQ 徽标、 MPLAB、 PIC、
PICmicro、 PICSTART、 PRO MATE、 rfPIC 和 SmartShunt
均为 Microchip Technology Inc. 在美国和其他国家或地区的
注册商标。
FilterLab、 Linear Active Thermistor、 MXDEV、 MXLAB、
SEEVAL、SmartSensor 和 The Embedded Control Solutions
Company 均为 Microchip Technology Inc. 在美国的注册商
标。
Analog-for-the-Digital Age、 Application Maestro、
CodeGuard、 dsPICDEM、 dsPICDEM.net、 dsPICworks、
dsSPEAK、 ECAN、 ECONOMONITOR、 FanSense、
In-Circuit Serial Programming、 ICSP、 ICEPIC、 Mindi、
MiWi、MPASM、MPLAB Certified 徽标、MPLIB、MPLINK、
mTouch、 PICkit、 PICDEM、 PICDEM.net、 PICtail、 PIC
32
徽标、 PowerCal、 PowerInfo、 PowerMate、 PowerTool、
REAL ICE、 rfLAB、 Select Mode、 Total Endurance、
UNI/O、WiperLock和ZENA均为Microchip Technology Inc.在
美国和其他国家或地区的商标。
SQTP 是 Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2008, Microchip Technology Inc. 版权所有。
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
Microchip
位于美国亚利桑那州
Chandler
和
Temp e
与位于俄勒冈州
Gresham
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
印度的设计中心均通过了
ISO/TS-16949:2002
认证。公司在
PIC
®
MCU
与
dsPIC
®
DSC
、
KEELOQ
®
跳码器件、串行
EEPROM
、单片机外
设、非易失性存储器和模拟产品方面的质量体系流程均符合
ISO/TS-
16949:2002
。此外,
Microchip
在开发系统的设计和生产方面的质量体
系也已通过了
ISO 9001:2000
认证。
MPLAB
®
C32 C 编译器
用户指南
2008 Microchip Technology Inc. DS51686A_CN 第 iii 页
目录
前言 ................................................................................................................................. 1
第 1 章 语言相关信息
1.1 简介 ................................................................................................................ 7
1.2 主要内容 ......................................................................................................... 7
1.3 概述 ................................................................................................................ 7
1.4 文件命名约定 .................................................................................................. 7
1.5 数据存储 ......................................................................................................... 8
1.6 预定义宏 ....................................................................................................... 10
1.7 属性和 Pragma 伪指令 ................................................................................. 11
1.8 命令行选项 ................................................................................................... 15
1.9 通过命令行编译单个文件 .............................................................................. 40
1.10 通过命令行编译多个文件 ............................................................................ 41
第 2 章 库环境
2.1 简介 .............................................................................................................. 43
2.2 主要内容 ....................................................................................................... 43
2.3 标准 I/O ......................................................................................................... 43
2.4 弱函数 ........................................................................................................... 43
2.5 “Helper”头文件 ........................................................................................ 44
2.6 Multilib .......................................................................................................... 44
第 3 章 中断
3.1 简介 .............................................................................................................. 47
3.2 主要内容 ....................................................................................................... 47
3.3 指定中断处理函数 ......................................................................................... 47
3.4 将中断处理函数与异常向量相关联 ............................................................... 48
3.5 异常处理程序 ................................................................................................ 49
第 4 章 低级处理器控制
4.1 简介 .............................................................................................................. 51
4.2 主要内容 ....................................................................................................... 51
4.3 通用处理器头文件 ......................................................................................... 51
4.4 处理器支持头文件 ......................................................................................... 51
4.5 外设库函数 ................................................................................................... 52
4.6 特殊功能寄存器访问 ..................................................................................... 53
4.7 CP0 寄存器访问 ............................................................................................ 53
4.8 配置位访问 ................................................................................................... 54
MPLAB
®
C32 C 编译器用户指南
DS51686A_CN 第 iv 页 2008 Microchip Technology Inc.
第 5 章 编译器运行时环境
5.1 简介 .............................................................................................................. 57
5.2 主要内容 ....................................................................................................... 57
5.3 寄存器约定 ................................................................................................... 57
5.4 堆栈使用 ....................................................................................................... 58
5.5 堆使用 .......................................................................................................... 59
5.6 函数调用约定 ................................................................................................ 59
5.7 启动和初始化 ................................................................................................ 61
5.8 默认链接描述文件的内容 .............................................................................. 73
5.9 RAM 函数 ..................................................................................................... 85
附录 A 实现定义的操作
A.1 简介 .............................................................................................................. 87
A.2 主要内容 ...................................................................................................... 87
A.3 概述 .............................................................................................................. 87
A.4 翻译 .............................................................................................................. 87
A.5 环境 .............................................................................................................. 88
A.6 标识符 .......................................................................................................... 89
A.7 字符 .............................................................................................................. 89
A.8 整型 .............................................................................................................. 90
A.9 浮点型 .......................................................................................................... 91
A.10 数组和指针 ................................................................................................. 92
A.11 提示 ............................................................................................................ 93
A.12 结构、联合、枚举和位域 ........................................................................... 93
A.13 限定符 ........................................................................................................ 94
A.14 声明符 ........................................................................................................ 94
A.15 语句 ............................................................................................................ 94
A.16 预处理伪指令 ............................................................................................. 94
A.17 库函数 ........................................................................................................ 96
A.18 架构 .......................................................................................................... 101
附录 B 开源许可
B.1 简介 ............................................................................................................ 103
B.2 通用公共许可证 .......................................................................................... 103
B.3 BSD 许可证 ................................................................................................ 103
B.4 Sun Microsystems ...................................................................................... 104
索引 .............................................................................................................................105
全球销售及服务网点 ....................................................................................................116
MPLAB
®
C32 C 编译器
用户指南
2008 Microchip Technology Inc. DS51686A_CN 第 1 页
前言
简介
本章包含在使用 MPLAB C32 C 编译器之前需要了解的一般信息。本章讨论的内容包
括:
• 文档编排
• 本指南中使用的约定
• 推荐读物
• Microchip 网站
• 开发系统变更通知客户服务
• 客户支持
• 文档版本历史
文档编排
本文档介绍如何使用 MPLAB C32 C 编译器开发工具在目标电路板上仿真和调试固件。
内容安排如下:
• 第 1 章 语言相关信息——讨论 MPLAB C32 C 编译器命令行的使用、属性、pragma
伪指令和数据表示
• 第 2 章库环境——讨论 MPLAB C32 C 库的使用
• 第 3 章中断——对中断处理进行概述
• 第 4 章 低级处理器控制——讨论 PIC32MX 器件的低级寄存器和配置的访问
• 第 5 章 编译器运行时环境——讨论 MPLAB C32 C 编译器的运行时环境
• 附录 A 实现定义的操作——讨论在 MPLAB C32 C 编译器中,对于“实现定义的操
作”所作的选择
• 附录 B 开源许可——简要介绍用于 MPLAB C32 C 编译器软件包某些部分的开源许
可证
客户须知
所有文档均会过时,本文档也不例外。 Microchip 的工具和文档将不断演变以满足客户的需求,因此
实际使用中有些对话框和 / 或工具说明可能与本文档所述之内容有所不同。请访问我们的网站
(www.microchip.com
)获取最新文档。
文档均标记有 “DS”编号。该编号出现在每页底部的页码之前。 DS 编号的命名约定为
“DSXXXXXA”,其中 “XXXXX”为文档编号,“A”为文档版本。
欲了解开发工具的最新信息,请参考 MPLAB
®
IDE 在线帮助。从 Help (帮助)菜单选择 Topics
(主题),打开现有在线帮助文件列表。