Contiki 2.6
|
00001 #ifndef __GPIO_H__LK7NAD1HN8__ 00002 #define __GPIO_H__LK7NAD1HN8__ 00003 #include <stm32f10x_map.h> 00004 00005 #define _GPIO_INPUT_ANALOG(h,l) 0 00006 00007 #define _GPIO_INPUT_FLOATING(h,l) (l) 00008 00009 #define _GPIO_INPUT_PU_PD(h,l) (h) 00010 00011 #define _GPIO_OUTPUT_PUSH_PULL(h,l) 0 00012 00013 #define _GPIO_OUTPUT_OPEN_DRAIN(h,l) (l) 00014 00015 #define _GPIO_OUTPUT_ALT_PUSH_PULL(h,l) (h) 00016 #define _GPIO_OUTPUT_ALT_OPEN_DRAIN(h,l) ((h)|(l)) 00017 00018 #define _GPIO_OUTPUT_SPEED_10(h,l) (l) 00019 #define _GPIO_OUTPUT_SPEED_2(h,l) (h) 00020 #define _GPIO_OUTPUT_SPEED_50(h,l) ((h)|(l)) 00021 00022 #define _GPIO_INPUT_CNF(bit,mode) \ 00023 _GPIO_INPUT_##mode(_GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_1),\ 00024 _GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_0)) 00025 00026 #define _GPIO_OUTPUT_CNF(bit,mode) \ 00027 _GPIO_OUTPUT_##mode(_GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_1),\ 00028 _GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_0)) 00029 00030 #define _GPIO_OUTPUT_SPEED(bit,speed) \ 00031 _GPIO_OUTPUT_SPEED_##speed(_GPIO_CONF_BIT_REG_##bit(GPIO_,_MODE##bit##_1),\ 00032 _GPIO_CONF_BIT_REG_##bit(GPIO_,_MODE##bit##_0)) 00033 00034 #define _GPIO_CONF_BIT_REG_0(a,c) a##CRL##c 00035 #define _GPIO_CONF_BIT_REG_1(a,c) a##CRL##c 00036 #define _GPIO_CONF_BIT_REG_2(a,c) a##CRL##c 00037 #define _GPIO_CONF_BIT_REG_3(a,c) a##CRL##c 00038 #define _GPIO_CONF_BIT_REG_4(a,c) a##CRL##c 00039 #define _GPIO_CONF_BIT_REG_5(a,c) a##CRL##c 00040 #define _GPIO_CONF_BIT_REG_6(a,c) a##CRL##c 00041 #define _GPIO_CONF_BIT_REG_7(a,c) a##CRL##c 00042 #define _GPIO_CONF_BIT_REG_8(a,c) a##CRH##c 00043 #define _GPIO_CONF_BIT_REG_9(a,c) a##CRH##c 00044 #define _GPIO_CONF_BIT_REG_10(a,c) a##CRH##c 00045 #define _GPIO_CONF_BIT_REG_11(a,c) a##CRH##c 00046 #define _GPIO_CONF_BIT_REG_12(a,c) a##CRH##c 00047 #define _GPIO_CONF_BIT_REG_13(a,c) a##CRH##c 00048 #define _GPIO_CONF_BIT_REG_14(a,c) a##CRH##c 00049 #define _GPIO_CONF_BIT_REG_15(a,c) a##CRH##c 00050 00051 #define _GPIO_CONF_BIT_REG(b) _GPIO_CONF_BIT_REG_##b(,) 00052 00053 00054 #define _GPIO_CONF_MASK(bit) (_GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit) \ 00055 |_GPIO_CONF_BIT_REG_##bit(GPIO_,_MODE##bit)) 00056 00057 #define GPIO_CONF_INPUT_PORT(port,bit,mode) MODIFY_REG(GPIO##port -> _GPIO_CONF_BIT_REG(bit),_GPIO_CONF_MASK(bit), _GPIO_INPUT_CNF(bit,mode)) 00058 00059 00060 #define GPIO_CONF_OUTPUT_PORT(port,bit,mode,speed) MODIFY_REG(GPIO##port -> _GPIO_CONF_BIT_REG(bit),_GPIO_CONF_MASK(bit), _GPIO_OUTPUT_CNF(bit,mode) | _GPIO_OUTPUT_SPEED(bit,speed)) 00061 00062 #ifndef AFIO_MAPR_SWJ_CFG_VALUE 00063 #define AFIO_MAPR_SWJ_CFG_VALUE AFIO_MAPR_SWJ_CFG_RESET 00064 #endif 00065 00066 #define AFIO_REMAP(mask,value) \ 00067 MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG | mask, AFIO_MAPR_SWJ_CFG_VALUE | value); 00068 00069 #define GPIO_CM0 0x000000000000000fLL 00070 #define GPIO_CM1 0x00000000000000f0LL 00071 #define GPIO_CM2 0x0000000000000f00LL 00072 #define GPIO_CM3 0x000000000000f000LL 00073 #define GPIO_CM4 0x00000000000f0000LL 00074 #define GPIO_CM5 0x0000000000f00000LL 00075 #define GPIO_CM6 0x000000000f000000LL 00076 #define GPIO_CM7 0x00000000f0000000LL 00077 #define GPIO_CM8 0x0000000f00000000LL 00078 #define GPIO_CM9 0x000000f000000000LL 00079 #define GPIO_CM10 0x00000f0000000000LL 00080 #define GPIO_CM11 0x0000f00000000000LL 00081 #define GPIO_CM12 0x000f000000000000LL 00082 #define GPIO_CM13 0x00f0000000000000LL 00083 #define GPIO_CM14 0x0f00000000000000LL 00084 #define GPIO_CM15 0xf000000000000000LL 00085 00086 #define _GPIO_CONF_INPUT_MASK(port, mask , mode) \ 00087 MODIFY_REG(GPIO##port ->CRH,((mask)>>32), (mode & ((mask)>>32))); \ 00088 MODIFY_REG(GPIO##port ->CRL,((mask)&0xffffffff), (mode & ((mask)&0xffffffff))) 00089 00090 #define GPIO_CONF_INPUT_ANALOG(port, mask) \ 00091 _GPIO_CONF_INPUT_MASK(port, mask, 0x00000000) 00092 00093 #define GPIO_CONF_INPUT_FLOATING(port, mask) \ 00094 _GPIO_CONF_INPUT_MASK(port, mask, 0x44444444) 00095 00096 #define GPIO_CONF_INPUT_PU_PD(port, mask) \ 00097 _GPIO_CONF_INPUT_MASK(port, mask, 0x88888888) 00098 00099 #define GPIO_CONF_OUTPUT_PUSH_PULL_50(port, mask) \ 00100 _GPIO_CONF_INPUT_MASK(port, mask, 0x22222222) 00101 #define GPIO_CONF_OUTPUT_PUSH_PULL_10(port, mask) \ 00102 _GPIO_CONF_INPUT_MASK(port, mask, 0x33333333) 00103 #define GPIO_CONF_OUTPUT_PUSH_PULL_2(port, mask) \ 00104 _GPIO_CONF_INPUT_MASK(port, mask, 0x11111111) 00105 00106 #define GPIO_CONF_OUTPUT_OPEN_DRAIN_50(port, mask) \ 00107 _GPIO_CONF_INPUT_MASK(port, mask, 0x77777777) 00108 #define GPIO_CONF_OUTPUT_OPEN_DRAIN_10(port, mask) \ 00109 _GPIO_CONF_INPUT_MASK(port, mask, 0x55555555) 00110 #define GPIO_CONF_OUTPUT_OPEN_DRAIN_2(port, mask) \ 00111 _GPIO_CONF_INPUT_MASK(port, mask, 0x66666666) 00112 00113 #define GPIO_CONF_OUTPUT_ALT_PUSH_PULL_50(port, mask) \ 00114 _GPIO_CONF_INPUT_MASK(port, mask, 0xbbbbbbbb) 00115 #define GPIO_CONF_OUTPUT_ALT_PUSH_PULL_10(port, mask) \ 00116 _GPIO_CONF_INPUT_MASK(port, mask, 0x99999999) 00117 #define GPIO_CONF_OUTPUT_ALT_PUSH_PULL_2(port, mask) \ 00118 _GPIO_CONF_INPUT_MASK(port, mask, 0xaaaaaaaa) 00119 00120 #define GPIO_CONF_OUTPUT_ALT_OPEN_DRAIN_50(port, mask) \ 00121 _GPIO_CONF_INPUT_MASK(port, mask, 0xffffffff) 00122 #define GPIO_CONF_OUTPUT_ALT_OPEN_DRAIN_10(port, mask) \ 00123 _GPIO_CONF_INPUT_MASK(port, mask, 0xdddddddd) 00124 #define GPIO_CONF_OUTPUT_ALT_OPEN_DRAIN_2(port, mask) \ 00125 _GPIO_CONF_INPUT_MASK(port, mask, 0xeeeeeeee) 00126 00127 00128 00129 #endif /* __GPIO_H__LK7NAD1HN8__ */