当前位置:首页 > iccavr使用说明
5 定义一个退出点如果你的主函数main( )一旦退出它将进入这个退出点进行无 限循环
启动文件也定义了复位向量你不需要修改启动文件来使用别的中断具体可参考中 断操作部分
为修改和使用新的启动文件
cd \\icc\\libsrc.avr ; 进入你安装的编译器路径
如果您使用的目标MCU 是Mega 你应该用\代替\注意Mega 的每 个中断入口地址使用两个字word 而非Mega 芯片每一个中断入口地址使用一个字 word . 你也可以有多个启动文件你可以在工程选项对话框中很方便地直接指定一个启动文 件加入您的工程中注意您必须指定启动文件的绝对路径或启动文件必须位于工程选项 库路径所指定的目录中 2 常用库介绍 1 库源代码 这个库源代码缺省路径为c:\\icc\\libsrc.avr\\libsrc.zip 是一个密码保护的ZIP 压缩文件 你可以从互连网上任意下载一个UNZIP 程序进行解压缩当本软件被开锁后密码显示在 \对话框中例如 unzip -s libsrc.zip ; unzip 提示输入密码 2 AVR 特殊函数----- ICCAVR 有许多访问UART EEPROM 和SPI 的函数堆栈检 查函数对检测堆栈是否溢出很有用另外我们的互连网上有一个页专门存放用户写的源代 码 3 io*.h (io2313.h, io8515.h, iom603.h, ... 等.) 这些文件中是从ATMEL 官方公开的定义IO 寄存器的源文件经过修改得到的应该用 这些文件来代替老的avr.h 文件 PORTB = 1; uc = PORTA; 4 macros.h 这个文件包含了许多有用的宏和定义 5 其它头文件 下列标准的C 头文件是被支持的如果你的程序使用了头文件所列出的函数那么包 含头文件是一个好习惯在使用浮点数和长整型数的程序中必须用 #include 预编译指令包 含这些包含了这些函数原形的头文件读者可参考返回非整型值的函数 assert.h - assert(), 声明宏 ctype.h – 字符类型函数 float.h – 浮点数原形 limits.h – 数据类型的大小和范围 math.h – 浮点运算函数 stdarg.h – 变量参数表. stddef.h – 标准定义 stdio.h – 标准输入输出IO 函数 stdlib.h – 包含内存分配函数的标准库 string.h – 字符串处理函数 3 字符类型库 下列函数按照输入的ACS II 字符集字符分类使用这些函数之前应当用\ 如果c 是数字或字母返回非零数值否则返回零 int isalpha(int c) 如果c 是字母返回非零数值否则返回零 int iscntrl(int c) 如果c 是控制字符如FF, BELL, LF ..等返回非零数值否则返回零 int isdigit(int c) 如果c 是数字返回非零数值否则返回零 int isgraph(int c) 如果c 是一个可打印字符而非空格返回非零数值否则返回零 int islower(int c) 如果c 是小写字母返回非零数值否则返回零 int isprint(int c) 如果c 是一个可打印字符返回非零数值否则返回零 int ispunct(int c) 如果c 是一个可打印字符而不是空格数字或字母返回非零数值否则返回零 int isspace(int c) 如果c 是一个空格字符返回非零数值包括空格CR, FF, HT, NL, 和 VT 否则返回零 int isupper(int c) 如果c 是大写字母返回非零数值否则返回零 int isxdigit(int c) 如果c 是十六进制数字返回非零数值否则返回零 int tolower(int c) 如果c 是大写字母则返回c 对应的小写字母其它类型仍然返回c int toupper(int c) 如果c 是小写字母则返回c 对应的大写字母其它类型仍然返回c 4 浮点运算库 下列函数支持浮点数运算使用这些函数之前必须用#include 以弧度形式返回x 的反正弦值 float acos(float x) 以弧度形式返回x 的反余弦值 float atan(float x) 以弧度形式返回x 的反正切值 float atan2(float x, float y) 返回y/x 的反正切其范围在- ~+ 之间 float ceil(float x) 返回对应x 的一个整型数小数部分四舍五入 float cos(float x) 返回以弧度形式表示的x 的余弦值 float cosh(float x) 返回x 的双曲余弦函数值 float exp(float x) 返回以e 为底的x 的幂即ex float exp10(float x) 返回以10 为底的幂即10x float fabs(float x) 返回x 的绝对值 float floor(float x) 返回不大于x 的最大整数 float fmod(float x, float y) 返回x/y 的余数 float frexp(float x, int *pexp) 把浮点数x 分解成数字部分y 尾数和以2 为底的指数n 两个部分即x=y 2 n y 的范围为0.5 y 1 y 值被函数返回而n 值存放到pexp 指向的变量中 float fround(float x) 返回最接近x 的整型数 float ldexp(float x, int exp) 返回x 2 e x p float log(float x) 返回x 的自然对数 float log10(float x) 返回以10 为底的x 的对数 float modf(float x, float *pint) 把浮点数分解成整数部分和小数部分整数部分存放到pint 指向的变量小数部分应 当大于或等于0 而小于1 并且作为函数返回值返回 float pow(float x, float y) 返回x y 值 float sqrt(float x) 返回x 的平方根 float sin(float x) 返回以弧度形式表示的x 的正弦值 float sinh(float x) 返回x 的双曲正弦函数值 float tan(float x) 返回以弧度形式表示的x 的正切值 float tanh(float x) 返回x 的双曲正切函数值 5 标准输入输出库 标准的文件输入输出是不能真正植入微控制器MCU 的标准stdio.h 的许多内容不 可以使用不过有一些IO 函数是被支持的同样使用之前应用\预处理 并且需要初始化输出端口最低层的IO 程序是单字符的输入(getchar)和输出(putchar)程序 如果你针对不同的装置使用高层的IO 函数例如用 printf 输出LCD 你需要全部重新定 义最底层的函数 为在ATMEL 的AVR Studio 模拟器终端IO 窗口使用标准IO 函数应当在编译选 项中选中相应的单选钮 注意作为缺省单字符输出函数putchar 是输出到UART 装置没有修改无论如何 为使输出能如期望的那样出现在程序终端窗口中' ' 字符必须被映射为成对的回车和换 行CR/LF int getchar() 使用查寻方式从UART 返回一个字符 int printf(char *fmt, ..) 按照格式说明符输出格式化文本frm 字符串格式说明符是标准格式的一个子集 %d--输出有符号十进制整数 %o --输出无符号八进制整数 %x - 输出无符号十六进制整数 %X –除了大写字母使用'A'-'F'外同 %x %u - 输出无符号十进制整数 %s – 输出一个以C 中空字符NULL 结束的字符串 %c – 以 ASCII 字符形式输出只输出一个字符 %f – 以小数形式输出浮点数 %S – 输出在FLASH存贮器中的字符串常量 printf 支持三个版本取决于你的特别需要和代码的大小越高的要求代码越大 基本形: 只有 %c, %d, %x, %u, 和 %s 格式说明符是承认的 长整形: 针对长整形数的修改 %ld, %lu, %lx 被支持, 以适用于精度要求较高的领域 浮点形: 全部格式包括%f 被支持 你使用编译选项对话框来选择版本代码大小的增加是值得关注的 int putchar(int c) 输出单个字符这个库程序使用了UART 以查寻方式输出单个字符注意输出’ ’字 符至程序终端窗口 int puts(char *s) 输出以NL 结尾的字符串 int sprintf(char *buf, char *fmt) 按照格式说明符输出格式化文本frm 字符串到一个缓冲区格式说明符同printf( ) \支持功能 cprintf 和csprintf 是将FLASH中的格式字符串分别以prinf 和sprinf 形式输出 6 标准库和内存分配函数 标准库头文件 描述了下列函数注意在你调用任意内存分配程序比如.. calloc malloc 和realloc)之前 必须调用_NewHeap 来初始化堆heap int abs(int i) 返回i 的绝对值 int atoi(char *s) 转换字符串s 为整型数并返回它字符串s 起始必须是整型数形式字符否则返回0
共分享92篇相关文档