原文出自:http://blog.csdn.net/henhen2002/article/details/4397788
1、 CSL命名规则
类型 | 命名规则 |
函数 | PER_funcName() |
变量 | PER_varName |
宏 | PER_MACRO_NAME |
Typedef类型 | PER_Typename |
函数传递参数 | funcArg |
结构体成员 | memberName |
² 所有函数、变量、宏及数据类型都是以“PER_“开始,其中PER是模块或外设的名字
² 外设名后面的函数名,用小写字母表示;只有当函数包括两个单词时才能用大写字母如PER_getConfig()
² 外设名后面的宏名要用大写;如DMA_PRICTL_RMK
² 数据类型用大写字母开头;如DMA_Handle
注意:CSL库中每个寄存器和每个域的宏名和常量名都定义在了CSL文件中,因此,在重新定义时不要重名,由于许多CSL函数都已在CSL库中定义,因此在创建自己的函数时也要当心。
2、 CSL 数据类型
数据类型 | 描述 |
Uint8 | unsigned char |
Uint16 | unsigned short |
Uint32 | unsigned int |
Uint40 | unsigned long |
Int8 | char |
Int16 | short |
Int32 | int |
Int40 | long |
3、 CSL函数
Function | Description |
handle=PER_open( channelNumber [priority] Flags) | 打开一个外设通道,根据flag进行操作,在使用通道前必须先调用该函数,返回值将在下面的API调用中唯一的标识设备名称 注:[priority]参数只适用于DAT模块 |
PER_config( [handle,] *configStructure) | 将配置结构体的值写入外设寄存器,可以用整数常量、整数变量、CSL标识常量PER_REG_DEFAULT等初始化配置结构体 |
PER_configArgs( [handle,] regval_1 . . regval_n) | 将一系列值(regval_n)写入外设寄存器中 参数可以是整数常量、整数变量、CSL标识常量PER_REG_DEFAULT等 |
PER_reset ( [handle]) | 将一个外设复位成上电初的默认值 |
PER_close ( handle ) | 关闭由PER_open()函数打开的通道,此时,通道寄存器的值复位成上电默认值,并且所有未被处理的中断会被清除。 |
ü []表示可选项
ü [handle]只有那些基于描述符的外设使用(如DAT、DMA、EDMA、GPIO、McBSP和TIMER)
ü [priority]只有在DAT模块中才有用
4、 CSL宏
注:
PER代表一个外设(如DMA)
REG代表一个寄存器名(如PRICTL0)
FIELD代表寄存器中的一段域(如ESIZE)
regval代表一个整型常量、整型变量、一个符号常量(PER_REG_DEFAULT)
x代表一个整型常量、整型变量
sym代表一个符号常量
一般的CSL宏
Macro | Description |
PER_REG_RMK( Fieldval_n……fieldval_0) | 将值存储到外设寄存器中,基于域构造值时,_RMK宏更加简化 有以下规则: 1、 只能包括那些可写的域 2、 首先指明的域参数做为最重要的位 3、 无论是否可用,所有可写域的值都必须被包括 |
PER_RGET ( REG ) | 返回外设寄存器中的值 |
PER_RSET(REG, regval) | 将值写入外设寄存器 |
PER_FMK(REG,FIELD,fieldval) |
|
PER_FGET(REG,FIFELD) | 返回外设寄存器中指定域中的值 |
PER_FSET(REG,FIELD,fieldval) | 将值写入寄存器指定域中 |
PER_REG_ADDR(REG) | 如果可用,将得到寄存器REG的存储地址 |
PER_FSETS(REG,FIELD,sym) | 将符号值写入寄存器指定域 |
PER_FMKS(REG,FIELD,sym) | 类似于PER_FMK |
一般基于handle的宏
Macro | 描述 |
PER_ADDRH(h,REG) | 返回handle代表的寄存器地址 |
PER_RGETH(h,REG) | 返回handle代表的寄存器中的值 |
PER_SGETH(h,REG,x) | 将值写入handle代表的寄存器中 |
PER_FGETH(h,REG,FIELD) | 返回handle代表的域中的值 |
PER_FSETH(h,REG,FIELD,x) | 将值x写入到handle代表的域中 |
PER_FSETSH(h,REG,FIELD,SYM) | 将符号值写入handle代表的域中 |