你问的这些都是SRU函数用到的,这个是 SRU函数的定义:
# define SRU(out,in) \
do { \
SRU_ERROR_CHECK(out,in) \
* (volatile unsigned int *) in##_REG = \
(sru_field(out,in) | \
(* (volatile unsigned int *) in##_REG & sru_mask(out,in))); \
} while (0)
注意下in 和out调用的地方,比如in用到了in##_REG ,意思很明显,就是要在你输入的名字后面加上_REG ,搜索头文件可以找到:
#define DAI_PB15_I_GROUP GROUP_D,在sru21489.h中,
sru_mask(out,in)函数,原函数如下:
#define sru_mask(out,in) \
~((((in##_GROUP & GROUP_A) >> LOG_GROUP_A) * MASK_A \
|((in##_GROUP & GROUP_B) >> LOG_GROUP_B) * MASK_B \
|((in##_GROUP & GROUP_C) >> LOG_GROUP_C) * MASK_C \
|((in##_GROUP & GROUP_D) >> LOG_GROUP_D) * MASK_D \
|((in##_GROUP & GROUP_E) >> LOG_GROUP_E) * MASK_E \
|((in##_GROUP & GROUP_F) >> LOG_GROUP_F) * MASK_F \
|((in##_GROUP & GROUP_G) >> LOG_GROUP_G) * MASK_G \
|((in##_GROUP & GROUP_A2)>> LOG_GROUP_A2)* MASK_A2\
|((in##_GROUP & GROUP_B2)>> LOG_GROUP_B2)* MASK_B2\
|((in##_GROUP & GROUP_C2)>> LOG_GROUP_C2)* MASK_C2) << in##_SHIFT)