Contiki 2.5
gpio.h
1 #ifndef __GPIO_H__LK7NAD1HN8__
2 #define __GPIO_H__LK7NAD1HN8__
3 #include <stm32f10x_map.h>
4 
5 #define _GPIO_INPUT_ANALOG(h,l) 0
6 
7 #define _GPIO_INPUT_FLOATING(h,l) (l)
8 
9 #define _GPIO_INPUT_PU_PD(h,l) (h)
10 
11 #define _GPIO_OUTPUT_PUSH_PULL(h,l) 0
12 
13 #define _GPIO_OUTPUT_OPEN_DRAIN(h,l) (l)
14 
15 #define _GPIO_OUTPUT_ALT_PUSH_PULL(h,l) (h)
16 #define _GPIO_OUTPUT_ALT_OPEN_DRAIN(h,l) ((h)|(l))
17 
18 #define _GPIO_OUTPUT_SPEED_10(h,l) (l)
19 #define _GPIO_OUTPUT_SPEED_2(h,l) (h)
20 #define _GPIO_OUTPUT_SPEED_50(h,l) ((h)|(l))
21 
22 #define _GPIO_INPUT_CNF(bit,mode) \
23 _GPIO_INPUT_##mode(_GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_1),\
24  _GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_0))
25 
26 #define _GPIO_OUTPUT_CNF(bit,mode) \
27 _GPIO_OUTPUT_##mode(_GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_1),\
28  _GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit##_0))
29 
30 #define _GPIO_OUTPUT_SPEED(bit,speed) \
31 _GPIO_OUTPUT_SPEED_##speed(_GPIO_CONF_BIT_REG_##bit(GPIO_,_MODE##bit##_1),\
32  _GPIO_CONF_BIT_REG_##bit(GPIO_,_MODE##bit##_0))
33 
34 #define _GPIO_CONF_BIT_REG_0(a,c) a##CRL##c
35 #define _GPIO_CONF_BIT_REG_1(a,c) a##CRL##c
36 #define _GPIO_CONF_BIT_REG_2(a,c) a##CRL##c
37 #define _GPIO_CONF_BIT_REG_3(a,c) a##CRL##c
38 #define _GPIO_CONF_BIT_REG_4(a,c) a##CRL##c
39 #define _GPIO_CONF_BIT_REG_5(a,c) a##CRL##c
40 #define _GPIO_CONF_BIT_REG_6(a,c) a##CRL##c
41 #define _GPIO_CONF_BIT_REG_7(a,c) a##CRL##c
42 #define _GPIO_CONF_BIT_REG_8(a,c) a##CRH##c
43 #define _GPIO_CONF_BIT_REG_9(a,c) a##CRH##c
44 #define _GPIO_CONF_BIT_REG_10(a,c) a##CRH##c
45 #define _GPIO_CONF_BIT_REG_11(a,c) a##CRH##c
46 #define _GPIO_CONF_BIT_REG_12(a,c) a##CRH##c
47 #define _GPIO_CONF_BIT_REG_13(a,c) a##CRH##c
48 #define _GPIO_CONF_BIT_REG_14(a,c) a##CRH##c
49 #define _GPIO_CONF_BIT_REG_15(a,c) a##CRH##c
50 
51 #define _GPIO_CONF_BIT_REG(b) _GPIO_CONF_BIT_REG_##b(,)
52 
53 
54 #define _GPIO_CONF_MASK(bit) (_GPIO_CONF_BIT_REG_##bit(GPIO_,_CNF##bit) \
55 |_GPIO_CONF_BIT_REG_##bit(GPIO_,_MODE##bit))
56 
57 #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))
58 
59 
60 #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))
61 
62 #ifndef AFIO_MAPR_SWJ_CFG_VALUE
63 #define AFIO_MAPR_SWJ_CFG_VALUE AFIO_MAPR_SWJ_CFG_RESET
64 #endif
65 
66 #define AFIO_REMAP(mask,value) \
67 MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG | mask, AFIO_MAPR_SWJ_CFG_VALUE | value);
68 
69 #define GPIO_CM0 0x000000000000000fLL
70 #define GPIO_CM1 0x00000000000000f0LL
71 #define GPIO_CM2 0x0000000000000f00LL
72 #define GPIO_CM3 0x000000000000f000LL
73 #define GPIO_CM4 0x00000000000f0000LL
74 #define GPIO_CM5 0x0000000000f00000LL
75 #define GPIO_CM6 0x000000000f000000LL
76 #define GPIO_CM7 0x00000000f0000000LL
77 #define GPIO_CM8 0x0000000f00000000LL
78 #define GPIO_CM9 0x000000f000000000LL
79 #define GPIO_CM10 0x00000f0000000000LL
80 #define GPIO_CM11 0x0000f00000000000LL
81 #define GPIO_CM12 0x000f000000000000LL
82 #define GPIO_CM13 0x00f0000000000000LL
83 #define GPIO_CM14 0x0f00000000000000LL
84 #define GPIO_CM15 0xf000000000000000LL
85 
86 #define _GPIO_CONF_INPUT_MASK(port, mask , mode) \
87  MODIFY_REG(GPIO##port ->CRH,((mask)>>32), (mode & ((mask)>>32))); \
88  MODIFY_REG(GPIO##port ->CRL,((mask)&0xffffffff), (mode & ((mask)&0xffffffff)))
89 
90 #define GPIO_CONF_INPUT_ANALOG(port, mask) \
91  _GPIO_CONF_INPUT_MASK(port, mask, 0x00000000)
92 
93 #define GPIO_CONF_INPUT_FLOATING(port, mask) \
94  _GPIO_CONF_INPUT_MASK(port, mask, 0x44444444)
95 
96 #define GPIO_CONF_INPUT_PU_PD(port, mask) \
97  _GPIO_CONF_INPUT_MASK(port, mask, 0x88888888)
98 
99 #define GPIO_CONF_OUTPUT_PUSH_PULL_50(port, mask) \
100  _GPIO_CONF_INPUT_MASK(port, mask, 0x22222222)
101 #define GPIO_CONF_OUTPUT_PUSH_PULL_10(port, mask) \
102  _GPIO_CONF_INPUT_MASK(port, mask, 0x33333333)
103 #define GPIO_CONF_OUTPUT_PUSH_PULL_2(port, mask) \
104  _GPIO_CONF_INPUT_MASK(port, mask, 0x11111111)
105 
106 #define GPIO_CONF_OUTPUT_OPEN_DRAIN_50(port, mask) \
107  _GPIO_CONF_INPUT_MASK(port, mask, 0x77777777)
108 #define GPIO_CONF_OUTPUT_OPEN_DRAIN_10(port, mask) \
109  _GPIO_CONF_INPUT_MASK(port, mask, 0x55555555)
110 #define GPIO_CONF_OUTPUT_OPEN_DRAIN_2(port, mask) \
111  _GPIO_CONF_INPUT_MASK(port, mask, 0x66666666)
112 
113 #define GPIO_CONF_OUTPUT_ALT_PUSH_PULL_50(port, mask) \
114  _GPIO_CONF_INPUT_MASK(port, mask, 0xbbbbbbbb)
115 #define GPIO_CONF_OUTPUT_ALT_PUSH_PULL_10(port, mask) \
116  _GPIO_CONF_INPUT_MASK(port, mask, 0x99999999)
117 #define GPIO_CONF_OUTPUT_ALT_PUSH_PULL_2(port, mask) \
118  _GPIO_CONF_INPUT_MASK(port, mask, 0xaaaaaaaa)
119 
120 #define GPIO_CONF_OUTPUT_ALT_OPEN_DRAIN_50(port, mask) \
121  _GPIO_CONF_INPUT_MASK(port, mask, 0xffffffff)
122 #define GPIO_CONF_OUTPUT_ALT_OPEN_DRAIN_10(port, mask) \
123  _GPIO_CONF_INPUT_MASK(port, mask, 0xdddddddd)
124 #define GPIO_CONF_OUTPUT_ALT_OPEN_DRAIN_2(port, mask) \
125  _GPIO_CONF_INPUT_MASK(port, mask, 0xeeeeeeee)
126 
127 
128 
129 #endif /* __GPIO_H__LK7NAD1HN8__ */