29
29
30
30
void gpio_write (gpio_t * obj , int value )
31
31
{
32
+ MBED_ASSERT (obj -> pin != NC );
33
+
32
34
if (value ) {
33
35
GPIO_PinOutSet ((GPIO_Port_TypeDef )(obj -> pin >> 4 & 0xF ), obj -> pin & 0xF ); // Pin number encoded in first four bits of obj->pin
34
36
} else {
@@ -38,6 +40,8 @@ void gpio_write(gpio_t *obj, int value)
38
40
39
41
int gpio_read (gpio_t * obj )
40
42
{
43
+ MBED_ASSERT (obj -> pin != NC );
44
+
41
45
if (obj -> dir == PIN_INPUT ) {
42
46
return GPIO_PinInGet ((GPIO_Port_TypeDef )(obj -> pin >> 4 & 0xF ), obj -> pin & 0xF ); // Pin number encoded in first four bits of obj->pin
43
47
} else {
@@ -63,15 +67,15 @@ uint32_t gpio_set(PinName pin)
63
67
64
68
void gpio_init (gpio_t * obj , PinName pin )
65
69
{
66
- MBED_ASSERT (pin != NC );
67
-
68
70
CMU_ClockEnable (cmuClock_HFPER , true);
69
71
CMU_ClockEnable (cmuClock_GPIO , true);
70
72
obj -> pin = pin ;
71
73
}
72
74
73
75
void gpio_mode (gpio_t * obj , PinMode mode )
74
76
{
77
+ MBED_ASSERT (obj -> pin != NC );
78
+
75
79
uint32_t pin = 1 << (obj -> pin & 0xF );
76
80
uint32_t port = (obj -> pin >> 4 ) & 0xF ;
77
81
@@ -129,6 +133,8 @@ void gpio_mode(gpio_t *obj, PinMode mode)
129
133
// Used by DigitalInOut to set correct mode when direction is set
130
134
void gpio_dir (gpio_t * obj , PinDirection direction )
131
135
{
136
+ MBED_ASSERT (obj -> pin != NC );
137
+
132
138
obj -> dir = direction ;
133
139
switch (direction ) {
134
140
case PIN_INPUT :
0 commit comments