#define 和UL

无意中看到 C语言面试题,我记得我第一份工作就是C语言笔试题,就能有这个题。呵呵

#define YEAR (3600*24*365)UL 网上流传的是这个版本但是这个编译不过去的,

正确的写法是#define YEAR (3600*24*365UL) 我理解#define 就是一个编译器在编译的时候替换文本,替换过后再编译

UL在外面就出错了。

写这个的好处就是告诉编译器这个是unsigned long int 的类型。明确不是让编译器去判断。

一般宏定义的一个整数 这个数据 类型 long unsigned long  int  

这个就是看你的数据的大小了,所以要表达自己的想法还是的写清楚,不然计算的时候就可能出现数据溢出。



#define MAX(A,B)  (A>=B)?(A):(B) 这个也是一个面试题,实际中的用的还是比较的多,很明晰。可是我居然时常忘了写等号。后来发现写不写等号都是一样的。

这个代码就直接嵌入到程序中了,《C语言经典面试题》不错!

int var;
int *ptr;
int **ptr;
int arry[10];
int *arry[10];
int (*ptr)[10];

写到 指向 10个数组的指针我开始犹豫了,没写过这个情况,

查了下书,C语言祖师爷说的是 * 是一个前缀运算符 优先级低于 () 所以* 先和ptr 结合而不是和前面的int 结合这样表达就有歧异了。

最近发现C语言中优先级还有点晕。冷僻的知识点!

#ifndef __CHIP_H__ #define __CHIP_H__ #define GPIO0_ROEN 0x103C00 #define GPIO0_MOEN BIT5 #define GPIO0_ROUT 0x103C00 #define GPIO0_MOUT BIT4 #define GPIO0_RIN 0x103C00 #define GPIO0_MIN BIT0 #define GPIO1_ROEN 0x103C02 #define GPIO1_MOEN BIT5 #define GPIO1_ROUT 0x103C02 #define GPIO1_MOUT BIT4 #define GPIO1_RIN 0x103C02 #define GPIO1_MIN BIT0 #define GPIO2_ROEN 0x103C04 #define GPIO2_MOEN BIT5 #define GPIO2_ROUT 0x103C04 #define GPIO2_MOUT BIT4 #define GPIO2_RIN 0x103C04 #define GPIO2_MIN BIT0 #define GPIO3_ROEN 0x103C06 #define GPIO3_MOEN BIT5 #define GPIO3_ROUT 0x103C06 #define GPIO3_MOUT BIT4 #define GPIO3_RIN 0x103C06 #define GPIO3_MIN BIT0 #define GPIO4_ROEN 0x103C08 #define GPIO4_MOEN BIT5 #define GPIO4_ROUT 0x103C08 #define GPIO4_MOUT BIT4 #define GPIO4_RIN 0x103C08 #define GPIO4_MIN BIT0 #define GPIO5_ROEN 0x103C0A #define GPIO5_MOEN BIT5 #define GPIO5_ROUT 0x103C0A #define GPIO5_MOUT BIT4 #define GPIO5_RIN 0x103C0A #define GPIO5_MIN BIT0 #define GPIO6_ROEN 0x103C0C #define GPIO6_MOEN BIT5 #define GPIO6_ROUT 0x103C0C #define GPIO6_MOUT BIT4 #define GPIO6_RIN 0x103C0C #define GPIO6_MIN BIT0 #define GPIO7_ROEN 0x103C0E #define GPIO7_MOEN BIT5 #define GPIO7_ROUT 0x103C0E #define GPIO7_MOUT BIT4 #define GPIO7_RIN 0x103C0E #define GPIO7_MIN BIT0 #define GPIO8_ROEN 0x103C10 #define GPIO8_MOEN BIT5 #define GPIO8_ROUT 0x103C10 #define GPIO8_MOUT BIT4 #define GPIO8_RIN 0x103C10 #define GPIO8_MIN BIT0 #define GPIO9_ROEN 0x103C12 #define GPIO9_MOEN BIT5 #define GPIO9_ROUT 0x103C12 #define GPIO9_MOUT BIT4 #define GPIO9_RIN 0x103C12 #define GPIO9_MIN BIT0 #define GPIO10_ROEN 0x103C18 #define GPIO10_MOEN BIT5 #define GPIO10_ROUT 0x103C18 #define GPIO10_MOUT BIT4 #define GPIO10_RIN 0x103C18 #define GPIO10_MIN BIT0 #define GPIO11_ROEN 0x103C1A #define GPIO11_MOEN BIT5 #define GPIO11_ROUT 0x103C1A #define GPIO11_MOUT BIT4 #define GPIO11_RIN 0x103C1A #define GPIO11_MIN BIT0 #define GPIO12_ROEN 0x103C1C #define GPIO12_MOEN BIT5 #define GPIO12_ROUT 0x103C1C #define GPIO12_MOUT BIT4 #define GPIO12_RIN 0x103C1C #define GPIO12_MIN BIT0 #define GPIO13_ROEN 0x103C1E #define GPIO13_MOEN BIT5 #define GPIO13_ROUT 0x103C1E #define GPIO13_MOUT BIT4 #define GPIO13_RIN 0x103C1E #define GPIO13_MIN BIT0 #define GPIO14_ROEN 0x103C28 #define GPIO14_MOEN BIT5 #define GPIO14_ROUT 0x103C28 #define GPIO14_MOUT BIT4 #define GPIO14_RIN 0x103C28 #define GPIO14_MIN BIT0 #define GPIO15_ROEN 0x103C2A #define GPIO15_MOEN BIT5 #define GPIO15_ROUT 0x103C2A #define GPIO15_MOUT BIT4 #define GPIO15_RIN 0x103C2A #define GPIO15_MIN BIT0 #define GPIO16_ROEN 0x103C2C #define GPIO16_MOEN BIT5 #define GPIO16_ROUT 0x103C2C #define GPIO16_MOUT BIT4 #define GPIO16_RIN 0x103C2C #define GPIO16_MIN BIT0 #define GPIO17_ROEN 0x103C2E #define GPIO17_MOEN BIT5 #define GPIO17_ROUT 0x103C2E #define GPIO17_MOUT BIT4 #define GPIO17_RIN 0x103C2E #define GPIO17_MIN BIT0 #define GPIO18_ROEN 0x103CC0 #define GPIO18_MOEN BIT5 #define GPIO18_ROUT 0x103CC0 #define GPIO18_MOUT BIT4 #define GPIO18_RIN 0x103CC0 #define GPIO18_MIN BIT0 #define GPIO19_ROEN 0x103CC2 #define GPIO19_MOEN BIT5 #define GPIO19_ROUT 0x103CC2 #define GPIO19_MOUT BIT4 #define GPIO19_RIN 0x103CC2 #define GPIO19_MIN BIT0 #define GPIO20_ROEN 0x103CC4 #define GPIO20_MOEN BIT5 #define GPIO20_ROUT 0x103CC4 #define GPIO20_MOUT BIT4 #define GPIO20_RIN 0x103CC4 #define GPIO20_MIN BIT0 #define GPIO21_ROEN 0x103CC6 #define GPIO21_MOEN BIT5 #define GPIO21_ROUT 0x103CC6 #define GPIO21_MOUT BIT4 #define GPIO21_RIN 0x103CC6 #define GPIO21_MIN BIT0 #define GPIO22_ROEN 0x103C40 #define GPIO22_MOEN BIT5 #define GPIO22_ROUT 0x103C40 #define GPIO22_MOUT BIT4 #define GPIO22_RIN 0x103C40 #define GPIO22_MIN BIT0 #define GPIO23_ROEN 0x103C42 #define GPIO23_MOEN BIT5 #define GPIO23_ROUT 0x103C42 #define GPIO23_MOUT BIT4 #define GPIO23_RIN 0x103C42 #define GPIO23_MIN BIT0 #define GPIO24_ROEN 0x103C44 #define GPIO24_MOEN BIT5 #define GPIO24_ROUT 0x103C44 #define GPIO24_MOUT BIT4 #define GPIO24_RIN 0x103C44 #define GPIO24_MIN BIT0 #define GPIO25_ROEN 0x103C46 #define GPIO25_MOEN BIT5 #define GPIO25_ROUT 0x103C46 #define GPIO25_MOUT BIT4 #define GPIO25_RIN 0x103C46 #define GPIO25_MIN BIT0 #define GPIO26_ROEN 0x103C48 #define GPIO26_MOEN BIT5 #define GPIO26_ROUT 0x103C48 #define GPIO26_MOUT BIT4 #define GPIO26_RIN 0x103C48 #define GPIO26_MIN BIT0 #define GPIO27_ROEN 0x103C4A #define GPIO27_MOEN BIT5 #define GPIO27_ROUT 0x103C4A #define GPIO27_MOUT BIT4 #define GPIO27_RIN 0x103C4A #define GPIO27_MIN BIT0 #define GPIO28_ROEN 0x103C4C #define GPIO28_MOEN BIT5 #define GPIO28_ROUT 0x103C4C #define GPIO28_MOUT BIT4 #define GPIO28_RIN 0x103C4C #define GPIO28_MIN BIT0 #define GPIO29_ROEN 0x103C4E #define GPIO29_MOEN BIT5 #define GPIO29_ROUT 0x103C4E #define GPIO29_MOUT BIT4 #define GPIO29_RIN 0x103C4E #define GPIO29_MIN BIT0 #define GPIO30_ROEN 0x103C50 #define GPIO30_MOEN BIT5 #define GPIO30_ROUT 0x103C50 #define GPIO30_MOUT BIT4 #define GPIO30_RIN 0x103C50 #define GPIO30_MIN BIT0 #define GPIO31_ROEN 0x103C52 #define GPIO31_MOEN BIT5 #define GPIO31_ROUT 0x103C52 #define GPIO31_MOUT BIT4 #define GPIO31_RIN 0x103C52 #define GPIO31_MIN BIT0 #define GPIO32_ROEN 0x103C54 #define GPIO32_MOEN BIT5 #define GPIO32_ROUT 0x103C54 #define GPIO32_MOUT BIT4 #define GPIO32_RIN 0x103C54 #define GPIO32_MIN BIT0 #define GPIO33_ROEN 0x103C56 #define GPIO33_MOEN BIT5 #define GPIO33_ROUT 0x103C56 #define GPIO33_MOUT BIT4 #define GPIO33_RIN 0x103C56 #define GPIO33_MIN BIT0 #define GPIO34_ROEN 0x103C58 #define GPIO34_MOEN BIT5 #define GPIO34_ROUT 0x103C58 #define GPIO34_MOUT BIT4 #define GPIO34_RIN 0x103C58 #define GPIO34_MIN BIT0 #define GPIO35_ROEN 0x103C5A #define GPIO35_MOEN BIT5 #define GPIO35_ROUT 0x103C5A #define GPIO35_MOUT BIT4 #define GPIO35_RIN 0x103C5A #define GPIO35_MIN BIT0 #define GPIO36_ROEN 0x103C5C #define GPIO36_MOEN BIT5 #define GPIO36_ROUT 0x103C5C #define GPIO36_MOUT BIT4 #define GPIO36_RIN 0x103C5C #define GPIO36_MIN BIT0 #define GPIO37_ROEN 0x103C5E #define GPIO37_MOEN BIT5 #define GPIO37_ROUT 0x103C5E #define GPIO37_MOUT BIT4 #define GPIO37_RIN 0x103C5E #define GPIO37_MIN BIT0 #define GPIO38_ROEN 0x103C60 #define GPIO38_MOEN BIT5 #define GPIO38_ROUT 0x103C60 #define GPIO38_MOUT BIT4 #define GPIO38_RIN 0x103C60 #define GPIO38_MIN BIT0 #define GPIO39_ROEN 0x103C62 #define GPIO39_MOEN BIT5 #define GPIO39_ROUT 0x103C62 #define GPIO39_MOUT BIT4 #define GPIO39_RIN 0x103C62 #define GPIO39_MIN BIT0 #define GPIO40_ROEN 0x103C30 #define GPIO40_MOEN BIT5 #define GPIO40_ROUT 0x103C30 #define GPIO40_MOUT BIT4 #define GPIO40_RIN 0x103C30 #define GPIO40_MIN BIT0 #define GPIO41_ROEN 0x103C32 #define GPIO41_MOEN BIT5 #define GPIO41_ROUT 0x103C32 #define GPIO41_MOUT BIT4 #define GPIO41_RIN 0x103C32 #define GPIO41_MIN BIT0 #define GPIO42_ROEN 0x103C34 #define GPIO42_MOEN BIT5 #define GPIO42_ROUT 0x103C34 #define GPIO42_MOUT BIT4 #define GPIO42_RIN 0x103C34 #define GPIO42_MIN BIT0 #define GPIO43_ROEN 0x103C36 #define GPIO43_MOEN BIT5 #define GPIO43_ROUT 0x103C36 #define GPIO43_MOUT BIT4 #define GPIO43_RIN 0x103C36 #define GPIO43_MIN BIT0 #define GPIO44_ROEN 0x103CE0 #define GPIO44_MOEN BIT5 #define GPIO44_ROUT 0x103CE0 #define GPIO44_MOUT BIT4 #define GPIO44_RIN 0x103CE0 #define GPIO44_MIN BIT0 #define GPIO45_ROEN 0x103CE2 #define GPIO45_MOEN BIT5 #define GPIO45_ROUT 0x103CE2 #define GPIO45_MOUT BIT4 #define GPIO45_RIN 0x103CE2 #define GPIO45_MIN BIT0 #define GPIO46_ROEN 0x103CE4 #define GPIO46_MOEN BIT5 #define GPIO46_ROUT 0x103CE4 #define GPIO46_MOUT BIT4 #define GPIO46_RIN 0x103CE4 #define GPIO46_MIN BIT0 #define GPIO47_ROEN 0x103CE6 #define GPIO47_MOEN BIT5 #define GPIO47_ROUT 0x103CE6 #define GPIO47_MOUT BIT4 #define GPIO47_RIN 0x103CE6 #define GPIO47_MIN BIT0 #define GPIO48_ROEN 0x103CE8 #define GPIO48_MOEN BIT5 #define GPIO48_ROUT 0x103CE8 #define GPIO48_MOUT BIT4 #define GPIO48_RIN 0x103CE8 #define GPIO48_MIN BIT0 #define GPIO49_ROEN 0x103CEA #define GPIO49_MOEN BIT5 #define GPIO49_ROUT 0x103CEA #define GPIO49_MOUT BIT4 #define GPIO49_RIN 0x103CEA #define GPIO49_MIN BIT0 #define GPIO50_ROEN 0x103CEC #define GPIO50_MOEN BIT5 #define GPIO50_ROUT 0x103CEC #define GPIO50_MOUT BIT4 #define GPIO50_RIN 0x103CEC #define GPIO50_MIN BIT0 #define GPIO51_ROEN 0x103CEE #define GPIO51_MOEN BIT5 #define GPIO51_ROUT 0x103CEE #define GPIO51_MOUT BIT4 #define GPIO51_RIN 0x103CEE #define GPIO51_MIN BIT0 #define GPIO52_ROEN 0x103C20 #define GPIO52_MOEN BIT5 #define GPIO52_ROUT 0x103C20 #define GPIO52_MOUT BIT4 #define GPIO52_RIN 0x103C20 #define GPIO52_MIN BIT0 #define GPIO53_ROEN 0x103C22 #define GPIO53_MOEN BIT5 #define GPIO53_ROUT 0x103C22 #define GPIO53_MOUT BIT4 #define GPIO53_RIN 0x103C22 #define GPIO53_MIN BIT0 #define GPIO54_ROEN 0x103CA0 #define GPIO54_MOEN BIT5 #define GPIO54_ROUT 0x103CA0 #define GPIO54_MOUT BIT4 #define GPIO54_RIN 0x103CA0 #define GPIO54_MIN BIT0 #define GPIO55_ROEN 0x103CA2 #define GPIO55_MOEN BIT5 #define GPIO55_ROUT 0x103CA2 #define GPIO55_MOUT BIT4 #define GPIO55_RIN 0x103CA2 #define GPIO55_MIN BIT0 #define GPIO56_ROEN 0x103CA4 #define GPIO56_MOEN BIT5 #define GPIO56_ROUT 0x103CA4 #define GPIO56_MOUT BIT4 #define GPIO56_RIN 0x103CA4 #define GPIO56_MIN BIT0 #define GPIO57_ROEN 0x103CA6 #define GPIO57_MOEN BIT5 #define GPIO57_ROUT 0x103CA6 #define GPIO57_MOUT BIT4 #define GPIO57_RIN 0x103CA6 #define GPIO57_MIN BIT0 #define GPIO58_ROEN 0x103CA8 #define GPIO58_MOEN BIT5 #define GPIO58_ROUT 0x103CA8 #define GPIO58_MOUT BIT4 #define GPIO58_RIN 0x103CA8 #define GPIO58_MIN BIT0 #define GPIO59_ROEN 0x103CAA #define GPIO59_MOEN BIT5 #define GPIO59_ROUT 0x103CAA #define GPIO59_MOUT BIT4 #define GPIO59_RIN 0x103CAA #define GPIO59_MIN BIT0 #define GPIO60_ROEN 0xF8E #define GPIO60_MOEN BIT0 #define GPIO60_ROUT 0xF8E #define GPIO60_MOUT BIT1 #define GPIO60_RIN 0xF8E #define GPIO60_MIN BIT2 #define GPIO61_ROEN 0xF28 #define GPIO61_MOEN BIT0 #define GPIO61_ROUT 0xF28 #define GPIO61_MOUT BIT1 #define GPIO61_RIN 0xF28 #define GPIO61_MIN BIT2 #define GPIO62_ROEN 0xF00 #define GPIO62_MOEN BIT0 #define GPIO62_ROUT 0xF00 #define GPIO62_MOUT BIT1 #define GPIO62_RIN 0xF00 #define GPIO62_MIN BIT2 #define GPIO63_ROEN 0xF02 #define GPIO63_MOEN BIT0 #define GPIO63_ROUT 0xF02 #define GPIO63_MOUT BIT1 #define GPIO63_RIN 0xF02 #define GPIO63_MIN BIT2 #define GPIO64_ROEN 0xF04 #define GPIO64_MOEN BIT0 #define GPIO64_ROUT 0xF04 #define GPIO64_MOUT BIT1 #define GPIO64_RIN 0xF04 #define GPIO64_MIN BIT2 #define GPIO65_ROEN 0xF06 #define GPIO65_MOEN BIT0 #define GPIO65_ROUT 0xF06 #define GPIO65_MOUT BIT1 #define GPIO65_RIN 0xF06 #define GPIO65_MIN BIT2 #define GPIO66_ROEN 0xF08 #define GPIO66_MOEN BIT0 #define GPIO66_ROUT 0xF08 #define GPIO66_MOUT BIT1 #define GPIO66_RIN 0xF08 #define GPIO66_MIN BIT2 #define GPIO67_ROEN 0xF0E #define GPIO67_MOEN BIT0 #define GPIO67_ROUT 0xF0E #define GPIO67_MOUT BIT1 #define GPIO67_RIN 0xF0E #define GPIO67_MIN BIT2 #define GPIO68_ROEN 0xF10 #define GPIO68_MOEN BIT0 #define GPIO68_ROUT 0xF10 #define GPIO68_MOUT BIT1 #define GPIO68_RIN 0xF10 #define GPIO68_MIN BIT2 #define GPIO69_ROEN 0xF12 #define GPIO69_MOEN BIT0 #define GPIO69_ROUT 0xF12 #define GPIO69_MOUT BIT1 #define GPIO69_RIN 0xF12 #define GPIO69_MIN BIT2 #define GPIO70_ROEN 0xF30 #define GPIO70_MOEN BIT0 #define GPIO70_ROUT 0xF30 #define GPIO70_MOUT BIT1 #define GPIO70_RIN 0xF30 #define GPIO70_MIN BIT2 #define GPIO71_ROEN 0xF32 #define GPIO71_MOEN BIT0 #define GPIO71_ROUT 0xF32 #define GPIO71_MOUT BIT1 #define GPIO71_RIN 0xF32 #define GPIO71_MIN BIT2 #define GPIO72_ROEN 0xF34 #define GPIO72_MOEN BIT0 #define GPIO72_ROUT 0xF34 #define GPIO72_MOUT BIT1 #define GPIO72_RIN 0xF34 #define GPIO72_MIN BIT2 #define GPIO73_ROEN 0xF36 #define GPIO73_MOEN BIT0 #define GPIO73_ROUT 0xF36 #define GPIO73_MOUT BIT1 #define GPIO73_RIN 0xF36 #define GPIO73_MIN BIT2 #define GPIO74_ROEN 0xF88 #define GPIO74_MOEN BIT0 #define GPIO74_ROUT 0xF88 #define GPIO74_MOUT BIT1 #define GPIO74_RIN 0xF88 #define GPIO74_MIN BIT2 #define GPIO75_ROEN 0xF8A #define GPIO75_MOEN BIT0 #define GPIO75_ROUT 0xF8A #define GPIO75_MOUT BIT1 #define GPIO75_RIN 0xF8A #define GPIO75_MIN BIT2 #define GPIO76_ROEN 0xF94 #define GPIO76_MOEN BIT0 #define GPIO76_ROUT 0xF94 #define GPIO76_MOUT BIT1 #define GPIO76_RIN 0xF94 #define GPIO76_MIN BIT2 #define GPIO77_ROEN 0xF96 #define GPIO77_MOEN BIT0 #define GPIO77_ROUT 0xF96 #define GPIO77_MOUT BIT1 #define GPIO77_RIN 0xF96 #define GPIO77_MIN BIT2 #define GPIO78_ROEN 0x1423 #define GPIO78_MOEN BIT0 #define GPIO78_ROUT 0x1424 #define GPIO78_MOUT BIT0 #define GPIO78_RIN 0x1425 #define GPIO78_MIN BIT0 #define GPIO79_ROEN 0x1423 #define GPIO79_MOEN BIT1 #define GPIO79_ROUT 0x1424 #define GPIO79_MOUT BIT1 #define GPIO79_RIN 0x1425 #define GPIO79_MIN BIT1 #define GPIO80_ROEN 0x1423 #define GPIO80_MOEN BIT0 #define GPIO80_ROUT 0x1424 #define GPIO80_MOUT BIT0 #define GPIO80_RIN 0x1425 #define GPIO80_MIN BIT0 #define GPIO81_ROEN 0x1423 #define GPIO81_MOEN BIT1 #define GPIO81_ROUT 0x1424 #define GPIO81_MOUT BIT1 #define GPIO81_RIN 0x1425 #define GPIO81_MIN BIT1 #define GPIO82_ROEN 0x33E2 #define GPIO82_MOEN BIT4 #define GPIO82_ROUT 0x33E4 #define GPIO82_MOUT BIT0 #define GPIO82_RIN 0x33E4 #define GPIO82_MIN BIT4 #define GPIO83_ROEN 0x33E2 #define GPIO83_MOEN BIT5 #define GPIO83_ROUT 0x33E4 #define GPIO83_MOUT BIT1 #define GPIO83_RIN 0x33E4 #define GPIO83_MIN BIT5 #define GPIO84_ROEN 0x33E2 #define GPIO84_MOEN BIT6 #define GPIO84_ROUT 0x33E4 #define GPIO84_MOUT BIT2 #define GPIO84_RIN 0x33E4 #define GPIO84_MIN BIT6 #define GPIO85_ROEN 0x33E2 #define GPIO85_MOEN BIT7 #define GPIO85_ROUT 0x33E4 #define GPIO85_MOUT BIT3 #define GPIO85_RIN 0x33E4 #define GPIO85_MIN BIT7 #define GPIO86_ROEN 0x14210a #define GPIO86_MOEN BIT4 #define GPIO86_ROUT 0x14210a #define GPIO86_MOUT BIT2 #define GPIO86_RIN 0x142131 #define GPIO86_MIN BIT5 #define GPIO87_ROEN 0x14210a #define GPIO87_MOEN BIT5 #define GPIO87_ROUT 0x14210a #define GPIO87_MOUT BIT3 #define GPIO87_RIN 0x142131 #define GPIO87_MIN BIT4 #define GPIO88_ROEN 0x103C80 #define GPIO88_MOEN BIT5 #define GPIO88_ROUT 0x103C80 #define GPIO88_MOUT BIT4 #define GPIO88_RIN 0x103C80 #define GPIO88_MIN BIT0 #define GPIO89_ROEN 0x103C82 #define GPIO89_MOEN BIT5 #define GPIO89_ROUT 0x103C82 #define GPIO89_MOUT BIT4 #define GPIO89_RIN 0x103C82 #define GPIO89_MIN BIT0 #define GPIO90_ROEN 0x103C84 #define GPIO90_MOEN BIT5 #define GPIO90_ROUT 0x103C84 #define GPIO90_MOUT BIT4 #define GPIO90_RIN 0x103C84 #define GPIO90_MIN BIT0 #define GPIO91_ROEN 0x103C86 #define GPIO91_MOEN BIT5 #define GPIO91_ROUT 0x103C86 #define GPIO91_MOUT BIT4 #define GPIO91_RIN 0x103C86 #define GPIO91_MIN BIT0 #define GPIO92_ROEN 0x103C88 #define GPIO92_MOEN BIT5 #define GPIO92_ROUT 0x103C88 #define GPIO92_MOUT BIT4 #define GPIO92_RIN 0x103C88 #define GPIO92_MIN BIT0 #define GPIO93_ROEN 0x103C8A #define GPIO93_MOEN BIT5 #define GPIO93_ROUT 0x103C8A #define GPIO93_MOUT BIT4 #define GPIO93_RIN 0x103C8A #define GPIO93_MIN BIT0 #define GPIO94_ROEN 0x103C8C #define GPIO94_MOEN BIT5 #define GPIO94_ROUT 0x103C8C #define GPIO94_MOUT BIT4 #define GPIO94_RIN 0x103C8C #define GPIO94_MIN BIT0 #define GPIO95_ROEN 0x103C8E #define GPIO95_MOEN BIT5 #define GPIO95_ROUT 0x103C8E #define GPIO95_MOUT BIT4 #define GPIO95_RIN 0x103C8E #define GPIO95_MIN BIT0 #define GPIO96_ROEN 0x103C90 #define GPIO96_MOEN BIT5 #define GPIO96_ROUT 0x103C90 #define GPIO96_MOUT BIT4 #define GPIO96_RIN 0x103C90 #define GPIO96_MIN BIT0 #define BUF_SIZE 256 #define CONFIG_RIU_BASE_ADDRESS 0x1F000000 //kernel也提供了相关实现 #ifndef GENMASK #define GENMASK(h,l) (((~0UL) << (l)) & (~0UL >> (32 - 1 - (h)))) #endif #define GET_BASE_ADDR_BY_BANK(x,y) ((x) + ((y) << 1)) #define _RIUA_8BIT(bank,offset) GET_BASE_ADDR_BY_BANK(CONFIG_RIU_BASE_ADDRESS, bank) + (((offset) & ~1)<<1) + ((offset) & 1) #define _RIUA_16BIT(bank,offset) GET_BASE_ADDR_BY_BANK(CONFIG_RIU_BASE_ADDRESS, bank) + ((offset)<<2) #define _GPIO_R_WORD_MASK(addr,mask) ((*(volatile u16*)(addr)) & (mask)) #define _GPIO_W_WORD_MASK(addr,val,mask) {(*(volatile u16*)(addr)) = ((*(volatile u16*)(addr)) & ~(mask)) | ((u16)(val) & (mask));} #define _GPIO_R_BYTE(addr) (*(volatile u8*)(addr)) #define PMSLEEP_BANK 0x000E00 #define CHIPTOP_BANK 0x101E00 #define SAR_BANK 0x001400 #define MHal_RIU_REG(addr) (*(volatile U8*)(CONFIG_RIU_BASE_ADDRESS + (((addr) & ~1)<<1) + (addr & 1))) #define REG_EJ_MODE 0x0f #define REG_EJ_MODE_MASK (BIT1|BIT0) #define REG_TEST_IN_MODE 0x12 #define REG_TEST_IN_MODE_MASK (BIT1|BIT0) #define REG_TEST_OUT_MODE 0x12 #define REG_TEST_OUT_MODE_MASK (BIT5|BIT4) #define REG_SPI0_MODE 0x0c #define REG_SPI0_MODE_MASK (BIT2|BIT1|BIT0) #define REG_PWM6_MODE 0x02 #define REG_PWM6_MODE_MASK (BIT5|BIT4|BIT3) #define REG_PWM7_MODE 0x02 #define REG_PWM7_MODE_MASK (BIT8|BIT7|BIT6) #define PINMUX_FOR_PM_PWM5_MODE 0x2e #define REG_PM_PWM5_MODE 0x27 #define REG_PM_PWM5_MODE_MASK BIT1 #define PINMUX_FOR_PM_PWM10_MODE 0x31 #define REG_PM_PWM10_MODE 0x27 #define REG_PM_PWM10_MODE_MASK BIT4 #define PINMUX_FOR_PM_LED_MODE 0x33 #define REG_PM_LED_MODE 0x28 #define REG_PM_LED_MODE_MASK (BIT5|BIT4) #define PINMUX_FOR_PM_VID_MODE 0x34 #define REG_PM_VID_MODE 0x28 #define REG_PM_VID_MODE_MASK (BIT13|BIT12) #define PINMUX_FOR_TEST_OUT_MODE 0x24 #define REG_TEST_OUT_MODE 0x12 #define REG_TEST_OUT_MODE_MASK (BIT5|BIT4) #define REG_SAR_AISEL 0x11*2 #define REG_SAR_CH0_AISEL BIT0 #define REG_SAR_CH1_AISEL BIT1 //输出模式 #define MHal_GPIO_Pad_EN(r_oen,m_oen) (MHal_RIU_REG(r_oen) &= (~m_oen)) //输入模式 #define MHal_GPIO_Pad_Dn(r_oen,m_oen) (MHal_RIU_REG(r_oen) |= (m_oen)) //输出高电平 #define MHal_GPIO_OutHigh(r_out,m_out) (MHal_RIU_REG(r_out) |= m_out) //输出低电平 #define MHal_GPIO_OutLOW(r_out,m_out) (MHal_RIU_REG(r_out) &= (~m_out)) #define CONCAT(a,b,c) a##b##c #define GPIO_ROEN(_x_) CONCAT(GPIO,_x_,_ROEN) #define GPIO_MOEN(_x_) CONCAT(GPIO,_x_,_MOEN) #define GPIO_RIN(_x_) CONCAT(GPIO,_x_,_RIN) #define GPIO_MIN(_x_) CONCAT(GPIO,_x_,_MIN) #define GPIO_ROUT(_x_) CONCAT(GPIO,_x_,_ROUT) #define GPIO_MOUT(_x_) CONCAT(GPIO,_x_,_MOUT) int board_gpio_init(void); #endif
09-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值