【正文】
T模塊。 PER_config( [handle,] *configStructure ) 功能:將配置結(jié)構(gòu)的值寫入外設(shè)寄存器。使用整型常量、整型變量、 CSL符號常量 PER_REG_DEFAULT 、 PER_REG_RMK宏生成的合并域值進(jìn)行初始化。 PER_configArgs( [handle,] regval_1, . . . regval_n ) 功能:寫值 (regval_n) 到外設(shè)寄存器??蓪懼蛋ǎ赫统A?、整型變量、 CSL符號常量 PER_REG_DEFAULT 、 PER_REG_RMK宏生成的合并域值。 PER_reset( [handle] ) 功能:復(fù)位外設(shè),將其所有值恢復(fù)到上電缺省值。 PER_close( handle ) 功能:關(guān)閉由 PER_open()函數(shù)打開的外設(shè)通道。通道寄存器恢復(fù)上電初始值,清除所有未執(zhí)行的中斷。 通過寄存器來實(shí)現(xiàn)外設(shè)初始化 CSL提供了兩種函數(shù)來初始化外設(shè)的寄存器: PERconfig() 用來初始化控制 PER 外設(shè)的寄存器,其中 PER 是 CSL模塊之一。這個函數(shù)需要一個地址來作為他的參數(shù)。這個地址指出了這個結(jié)構(gòu)的位置,他代表了外設(shè)寄存器的值。每一個外設(shè)模塊都定義了他的配置結(jié)構(gòu)數(shù)據(jù)類型,包括 PERconfig()函數(shù)。 PER_Config MyConfig = { reg0, reg1, …}。 … PER_config(amp。MyConfig)。 PERconfigArgs() 允許將個別寄存器的值傳給函數(shù)的變量,然后將獨(dú)立的值傳給寄存器。 PER_configArgs(reg0, reg1, …)。 通用 CSL宏 PER 表示外設(shè),如 EDMA REG 表示寄存器名,如 PRICTL0, AUXCTL FIELD 表示寄存器域,如 ESIZE regval 表示外設(shè)域生成宏 PERFMK()產(chǎn)生的整型常量,整型變量,符號常量 (PER_REG_DEFAULT),或者融合域值 fieldval 表示的是整常量,整型變量,或者符號常數(shù)(PER_REG_FIELD_SYMVAL) x 表示整型常量,整型變量 sym 表示符號常量 通用 CSL宏 PER_REG_RMK( fieldval_n, . . . fieldval_0 ) 功能:產(chǎn)生外設(shè)寄存器值; _RMK宏基于位域,使構(gòu)建寄存器值變得很簡單。 _RMK宏使用規(guī)則:域必須可寫。首先指定域參數(shù)的最高有效位( MSB),不管用到與否,必須包含所有可寫域的值。如果所傳值超出特定域所允許的位寬, _RMK宏將截斷該域值。 PER_RGET(REG ) 功能:返回外設(shè)寄存器值。 PER_RSET(REG, regval ) 功能:將值寫入外設(shè)寄存器。 PER_FMK(REG, FIELD , fieldval ) 功能:可與其他 _FMK宏的結(jié)果進(jìn)行 或 (OR)操作后,生成移位的 fieldval 值,對 REG寄存器進(jìn)行初始化。 作為 _RMK宏的替代者,該宏允許初始化 REG寄存器中的幾個域,而不像 _RMK宏那樣必須初始化 REG寄存器的所有域。 PER_FGET(REG, FIELD ) 功能:返回外設(shè)寄存中指定域( FIELD) 的值 。 PER_FSET(REG, FIELD, fieldval ) 功能:將 fieldval寫入外設(shè)寄存器中指定域( FIELD)。 PER_REG_ADDR(REG ) 功能:如果可用,取得外設(shè)寄存器( REG)的內(nèi)存地址(或子地址) PER_FSETS(REG, FIELD, sym ) 功能:將符號值寫入外設(shè)指定域中。 PER_FMKS(REG, FIELD, sym macro) 功能:可與其他 _FMK/_FMKS宏的結(jié)果進(jìn)行 或 (OR)操作,生成移位的 符號值 ,對 REG寄存器進(jìn)行初始化。 通用 CSL宏 PER_ADDRH (h, REG ) Returns the address of a memorymapped register for a given handle. PER_RGETH (h, REG ) Returns the value of a register for a given handle. PER_RSETH (h, REG, x ) Sets the register value to x for a given handle. PER_FGETH (h, REG, FIELD ) Returns the value of the field for a given handle. PER_FSETH (h, REG, FIELD, x ) Sets the field value to x for a given handle. PER_FSETSH (h, REG, FIELD, SYM ) Sets the field value to the symbol value for a given handle. CSL符號常量值 PER_REG_DEFAULT 寄存器的缺省值,復(fù)位操作后對應(yīng)的寄存器值或者復(fù)位失效后歸零。 PER_REG_FIELD_SYMVAL 該符號常量用于指定特定外設(shè)寄存器中某個域的值。符號值的詳細(xì)信息請參見附錄 B: CSL Registers PER_REG_FIELD_DEFAULT 域的缺省值,復(fù)位操作后對應(yīng)的寄存器值或者復(fù)位失效后歸零。 使用 CSL句柄 使用函數(shù) PER_open()來打開設(shè)備,獲得一個句柄 Handle,若打開設(shè)備失敗,那么PER_open()函數(shù)返回 INV 。 使用函數(shù) PER_close()來關(guān)閉設(shè)備。 EDMA_Handle myEdma。 /* Defines a DMA_Handle object, myEdma */ /* Once defined, the CSL handle object is initialized by a call to PER_open.*/ myEdma = EDMA_open (EDMA_CHA0, EDMA_OPEN_RESET)。 /* Open EDMA channel 0 */ /* The call to DMA_open initializes the handle, myDma. This handle can then be used in calls to other API functions.*/ if(myEdma != INV) { EDMA_start (myEdma)。 /* Begin transfer */ EDMA_close (myEdma)。 /* Free DMA channel */