Contiki 2.6

gpio.h

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__ */