AVRGCC常见库函数和头文件介绍

发布者:tau29最新更新时间:2016-09-14 来源: eefocus关键字:AVRGCC  常见库函数  头文件 手机看文章 扫描二维码
随时随地手机看文章
一、库函数头文件介绍

库函数按不同的类别声明在不同的头文件中,以字母为序分别介绍头文件: 
ctype.h:字符类型函数 
eeprom.h:EEPROM 访问函数 
errno.h:错误处理函数 
ina90.h:与IAR C兼容的头文件 
interrupt.h:中断处理函数 
inttypes.h:定义不同的数据类型 
io.h:包含寄存器定义和其它头文件 
math.h:数学函数 
pgmspace.h:与IAR C兼容的头文件,内含对Flash存储器中数据读写函数 
progmem.h:与pgmspace.h 头文件相同 
setjmp.h:长跳转函数 
sig-avr.h:与signal.h相同,旧版头文件,建议不使用 
signal.h:信号处理函数 
stdlib.h:标准库函数 
stdio.h:标准输入输出函数 
string.h:字符串操作函数 
timer.h:定时器控制函数 
twi.h:针对ATmega163的I2C函数 
wdt.h:看门狗定时器控制函数

注:AVRGCC在使用前应包含头文件,例如#include ,这里要包含头文件所在的文件夹avr,用户自己的头文件可以先复制到avr文件夹下。

二、字符类型处理函数库
int isalnum(int c):如果c为字母或数字则返回1,否则返回0。 
int isalpha(int c):如果c为字母则返回1,否则返回0。 
int isascii(int c):如果c为ASCII码则返回1,否则返回0。 
int isblank(int c):如果c为空格字符则返回1,否则返回0,可以是space键或tab键输入的空格字符。 
int iscntrl(int c):如果c为控制字符则返回1,否则返回0。 
int isdigit(int c):如果c为数字则返回1,否则返回0。 
int isgraph(int c):如果c为可打印字符(不包括空格)则返回1,否则返回0。 
int islower(int c):如果c为小写字母则返回1,否则返回0。 
int isprint(int c):如果c为可打印字符(包括空格)则返回1,否则返回0。 
int ispunct(int c):如果c为标点符号则返回1,否则返回0。 
int isspace(int c):如果c为空格、' '、'\f'、'\r'、'\t'、'v'之一则返回1,否则返回0。 
int isupper(int c):如果c为大写字母则返回1,否则返回0。 
int isxdigit(int c):如果c为16进制数则返回1,否则返回0。 
int toascii(int c):将c转换为7位ASCII字符,成功返回1,否则返回0。 
int tolower(int c):将c转换为小写字母,成功返回1,否则返回0。 
int toupper(int c):将c转换为大写字母,成功返回1,否则返回0。


三、AVRGCC内置EEPROM访问函数库 
void eeprom_read_block(void *buf, unsigned int addr, size_t n):从EEPROM的addr地址开始,读取n个字节到buf。 
int eeprom_is_ready():宏定义,EEPROM准备好(EECR =0)返回非0,否则返回0。 
unsigned char eeprom_read_byte (unsigned int addr):从EEPROM读取addr地址处的字节数据,在以前的版本中为unsigned char eeprom_rb(unsigned int addr),新版也兼容旧版本的函数。 
unsigned int eeprom_read_word(unsigned int addr):从EEPROM读取一个整数,低字节地址addr,高字节地址(addr+1) ,在以前的版本中为unsigned int eeprom_rw(unsigned int addr),新版本也兼容旧版本的函数。 
void eeprom_write_byte (unsigned int addr, unsigned char val):向EEPROM的addr地址处写入字节数据val,在以前的版本中为void eeprom_wb(unsigned int addr, unsigned char val),新版本也兼容旧版本的函数。 
_EEPUT(addr, val) eeprom_wb(addr, val):与IAR C的兼容函数 
_EEGET(var, addr) (var) = eeprom_rb(addr):与IAR C的兼容函数 
四、AVRGCC定义不同类型的数据 
在使用前应包含头文件#include ,在本头文件中重新进行数据类型定义,将GNU的数据类型改为符合ANSI C的规范。 
typedef signed char int8_t:8位有符号数 
typedef unsigned char uint8_t:8位无符号数 
typedef int int16_t:16位有符号数 
typedef unsigned int uint16_t:16位无符号数 
typedef long int32_t:32位有符号数 
typedef unsigned long uint32_t:32位无符号数 
typedef long long int64_t:64位有符号数 
typedef unsigned long long uint64_t:64位无符号数 
Typedef int16_t intptr_t:指针 
Typedef uint16_t uintptr_t:指针 
注意:在使用“-mint8”选项时,编译器将把int类型定义为8位 
五、AVRGCC数学函数库 
在使用前应包含头文件#include ,而且math.h数学函数库中定义的函数需要libm.a库文件支持,因此在在连接时增加-lm参数,或者在在makefile的LDFLAGS=后面追加-lm参数。 
M_PI:常数,为3.141592653589793238462643 
M_SQRT2:常数,为1.4142135623730950488016887 
double cos( double x ):返回以弧度形式表示x的余弦值 
double fabs( double x ):返回x的绝对值。 
double fmod( double x, double y ):返回x/y的余数 
double modf( double x, double *iptr ):把浮点数分解成整数部分和小数部分,整数部分存放到pint指向的变量,小数部分应当大于或等于0而小于1,并且作为函数返回值返回。 
double sin( double x ):返回以弧度形式表示x的正弦值。 
double sqrt( double x ):返回x的平方根 
double tan( double x ):返回以弧度形式表示x的正切值。 
double floor( double x ):返回不大于x的最大整数。 
double ceil( doublce x ):返回不小于x的最小整数。 
double frexp( double x, int *exp ):把浮点数x分解成数字部分y(尾数)和以2为底的指数n两个部分,即x=y*2n,y的范围为0.5≤y<1,y值被函数返回,而n值存放在pexp指向的变量中 
double ldexp( double x, int exp ):返回x*2exp。 
double exp( double x ):返回以e为底x的幂,即ex 
double cosh( double x ):以弧度形式返回x的双曲余弦值 
double sinh( double x ):以弧度形式返回x的双曲正弦值 
double tanh( double x ):以弧度形式返回x的双曲正切值 
double acos( double x ):以弧度形式返回x的余弦值 
double asin( double x ):以弧度形式返回x的正弦值 
double atan( double x ):以弧度形式返回x的余弦值 
double atan2( double x, double y ):返回y/x的反正切,其范围在-π~+π之间 
double log( double x ):返回x的自然对数。 
double log10( double x ):返回以10为底的对数 
double pow( double x, double y ):返回xy值 
int isnan(double x):如果x为非负数(NAN,值为0xffffffff),返回1,否则返回0 
int isnaf(double x):如果x的值为正溢出(+INF,值大于0x7f800000)和负溢出(-INF,值小于0xff800000)则返回0,否则返回1 
double strtod( const char *s, char **endptr ):将ASCII字符串转换为double数 
double square( double x ):返回x的平方根 
double inverse( double x ):返回1/x 
六、AVRGCC字符串操作函数库 
在使用前应包含头文件#include
void * memccpy (void *dest,const void *src,int val,size_t len):从scr复制不超过len个字节到dest,在复制的过程中如果存在val,则停止复制并返回,如果不存在val,则复制len个字符。 
void * memchr(const void *src,int val,size_t len):在字符串src中搜索len个字节长度以寻找与val相同的字符,如果成功返回匹配字符的地址指针,否则返回NULL 
int memcmp(const void *s1,const void *s2,size_t len):对字符串s1和s2的前len个字符进行比较,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中

字符串小于s2中字符串,则返回小于0的值。 
void * memcpy(void *dest,const void *src,size_t len):拷贝src所指的对象中拷贝len个字符至dest所指的对象中,函数返回dest的值。。 
void * memmove(void *dest,const void *src,size_t len):拷贝src中len个字符至dest,其它与memcpy基本相同,但拷贝区可以重迭,在拷贝过程中使用了个长度为len的临时数组。 
void * memset(void *dest,int val,size_t len):在dest中从开始位置填充len个字节的val,它返回dest 
int strcasecmp(const char *s1,const char *s2):比较两个字符串,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。 
char * strcat(char *dest,const char *src):将src所指向的字符串(包括终止字符串的空字符)复制到dest所指向的数组的末尾,并且src所向指向的字符串的初始字符将覆盖dest末尾的空字符,函数返回dest的值。 
char *strchr(const char *src,int val):在字符串src中搜索最后出现的val,并返回它的位置,终止字符串的空字会也作为串的一部分,函数返回指src中第一个val的位置,如果没有出现与val相同的字符,则返回一个空指针。 
int strcmp(const char *s1,const char *s2):比较两个字符串,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。 
char * strcpy(char *dest,const char *src):将src所指向的字符串(包括终止字符串的空字符)复制到dest所指向的数组的末尾,函数返回dest的值。 
size_t strlcat(char *dest,const char *src,size_t size):基本和strcat函数相同,但只复制前size个字符,如果size大于src所指向字符串的长度,则将src复制到dest后就返回。 
size_t strlcpy(char *dest,const char *src,size_t size):基本和strcpy函数相同,但只复制前size个字符,如果size大于src所指向字符串的长度,则将src复制到dest后就返回。 
size_t strlen(const char *src):返回字符串src的长度,不包括结束NULL字符 
char * strlwr(char *string):将src字符串中的大写字母转换成相应的小写字母,其它字符保持不变 
int strncasecmp(const char *s1,const char *s2,size_t len):基本和strcasecmp函数相同 
char * strncat(char *dest,const char *src,size_t len):函数strncat将src所指向的字符串(包括终止字符和空字符)复制到dest所指向的数组的末尾,最多追回len个字符,空字符及空字符后的字符不予复制。src的初始字符覆盖dest末尾的空字符。结果字符串的末尾通常追加一个空字符,函数返回dest的值。 
int strncmp(const char *s1,const char *s2,size_t len):函数比较s1和s2所指向的字符串,如果相同返回0,如果s1中字符串大于s2中字符串,则返回大于0的值,如果s1中字符串小于s2中字符串,则返回小于0的值。 
char *strncpy(char *dest,const char *src,size_t len):基本和strlcpy函数相同 
size_t strnlen(const char *src,size_t len):基本和strlen函数相同,如果src小于len,则返回src的长度(不包含结束NULL字符),否则返回len 
char * strrchr(const char *src,int val):基本和strchr函数相同,但返回的是最后一次与val匹配字符的位置 
char * strrev(char *string):将字符串string翻转,即第一个字符变成最后一个,最后一个变成第一个。 
char * strstr(const char *s1,const char *s2):在字符串s1中搜索字符串s2,并返回找到的第一个相匹配的针,否则返回NULL 
char * strupr(char *string):将src字符串中的小写字母转换成相应的大写字母,其它字符保持不变 
七、定时器控制函数timer.h

文件包含为:#include
timer.h文件定义定时/计数器使用的一个枚举类型: 
enum 

STOP = 0, 
CK = 1, 
CK8 = 2, 
CK64 = 3, 
CK256 = 4, 
CK1024 = 5, 
T0_FALLING_EDGE = 6, 
T0_RISING_EDGE = 7 
}; 
枚举类型定义定时/计数器的控制寄存器的时钟源(分频系数) 
void timer0_source( unsigned int src):将src赋值给寄存器TCCR0 
void timer0_stop();:通过对寄存器TCNT0清零来停止定时器0 
void timer0_start();:通过对寄存器TCNT0写入1来启动定时器0

关键字:AVRGCC  常见库函数  头文件 引用地址:AVRGCC常见库函数和头文件介绍

上一篇:AVR单片机熔丝位设置技巧
下一篇:一种基于avr的多任务机制

推荐阅读最新更新时间:2024-03-16 15:10

s3c2440头文件之2440addr.h
//============================================================================= // File Name : 2440addr.h // Function : S3C2440 Define Address Register // History // 0.0 : Programming start (February 15,2002) - SOP // Revision : 03.11.2003 ver 0.0 Attatched for 2440 //=================================================
[单片机]
PIC16F886跑马灯程序
#include pic.h //调用头文件,16F87XA单片机 __CONFIG(0xFF32); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define L0 RD0 //定义L0为RD0端口 #define L1 RD1 #define L2 RD2 #define L3 RD3 #define L4 RD4 #define L5 RD5 #define L6 RD6 #define L7 RD7 unsigned int a; void delay(); void main(vodi) { TRISD=0B00000000; //0X00; PORTD=0B0
[单片机]
C51中头文件的写法
一、头文件位置 #include xxx.h 优先在系统默认路径查找头文件 #include“xxx.h”有现在项目路径查找头文件 二、#ifndef和#endif 通常形式为 #ifndef _xxxx_h_ #define _xxxx_h_ .........(头文件具体内容) #endif 这样的写法表示,如果_xxxx_h_还没有被定义,那么头文件内容将被执行,如果已经定义过了,那么头文件内容就不执行了。作用在于,如果某头文件被不同c文件同时调用,那么里面的内容不至于因为重复定义而出错,因为不管调用几次头文件,其内容只有在第一次出现时被执行,同时定义一个_xxxx_h_,以后再次调用时,头文件内容被忽
[单片机]
头文件AT89x051.H
头文件AT89x051.H /*-------------------------------------------------------------------------- AT89x051.H Header file for the Atmel 89C1051U, 89C2051, 89C4051. Copyright (c) 1995-2000 Keil SOF tware, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef AT89CX051_
[单片机]
C51在程序设计中的头文件用法
我们在用c语言编程是往往第一行就是reg51.h或者其他的自定义头文件,我们怎么样来理解呢? 1)“文件包含”处理。 程序的第一行是一个“文件包含”处理。 所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。程序中包含REG51.h 文件的目的是为了要使用P1 (还有其他更多的符号)这个符号,即通知C 编译器,程序中所写的P1 是指80C51 单片机 的P1 端口而不是其它变量。这是如何做到的呢? 打开reg51.h 可以看到这样的一些内容: (此文件一般在C:\KEIL\C51\INC下 ,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使
[单片机]
STC单片机在KEIL编译器中的头文件
  STC单片机在 keil 编译器里找不到头文件如何处理。首先在网络上找到一个关于STC单片机的升级包。安装上去以后,就可以看到有STC型号的单片机可以选择了。但是此时,它的头文件却无法调用。也没有在keil的安装文件下找到这个升级包应该附带的STC单片机头文件。   解决办法就是打开一个AT89S52的头文件,在此头文件的基础上假如STC独有的一些SFR声明,然后把文件名改为STC89S52.H,然后放入工程所在文件夹,就可以进行正常调用了。   STC的特殊SFR声明如下:   /* After is STC additional SFR */   /* sfr AUXR = 0x8e; */   /* sfr
[单片机]
ARM单片机的头文件如何用结构体定义地址
下面我们以ARM Cortex-M0内核单片机LPC1114的头文件lpc11xx.h文件进行说明。 1.先说两句 lpc11xx.h文件是lpc11xx系列单片机包含的头文件。这个文件的作用和51单片机中的reg51.h头文件是一个性质,都是用来定义寄存器在单片机中的地址的。 你现在就可以打开reg51.h文件和lpc11xx.h文件看看,对比后你会发现两个主要的区别,首先是lpc11xx.h文件的寄存器定义是用结构体的形式,而reg51.h文件中,寄存器的定义都是一条一条的很直接的地址定义。然后是reg51.h文件中有sfr这样的“伪c语言”,而lpc11xx.h中用的是标准的c语言。C语言的最大用武之地就是单片机,要想学c,
[单片机]
ARM单片机的<font color='red'>头文件</font>如何用结构体定义地址
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved