@@ -30,20 +30,21 @@ void gpio_init(gpio_t *obj, PinName pin, PinDirection direction) {
30
30
return ;
31
31
32
32
if (direction ) {
33
+ gpio_output_pin_t output = {0 };
34
+
33
35
obj -> pinName = pin ;
34
- obj -> out_config .outputLogic = 0 ;
35
- obj -> out_config .slewRate = kPortSlowSlewRate ;
36
- obj -> out_config .driveStrength = kPortLowDriveStrength ,
37
- obj -> isOutput = true;
38
- sdk_gpio_inout_pin_init ((const gpio_input_output_pin_t * )obj );
36
+ output .config .outputLogic = 0 ;
37
+ output .config .slewRate = kPortSlowSlewRate ;
38
+ output .config .driveStrength = kPortLowDriveStrength ,
39
+ sdk_gpio_output_pin_init ((const gpio_output_pin_t * )& output );
39
40
} else {
41
+ gpio_input_pin_t input = {0 };
40
42
obj -> pinName = pin ;
41
- obj -> in_config .isPullEnable = true;
42
- obj -> in_config .pullSelect = kPortPullUp ;
43
- obj -> in_config .isPassiveFilterEnabled = false;
44
- obj -> in_config .interrupt = kPortIntDisabled ;
45
- obj -> isOutput = false;
46
- sdk_gpio_inout_pin_init ((const gpio_input_output_pin_t * )obj );
43
+ input .config .isPullEnable = true;
44
+ input .config .pullSelect = kPortPullUp ;
45
+ input .config .isPassiveFilterEnabled = false;
46
+ input .config .interrupt = kPortIntDisabled ;
47
+ sdk_gpio_input_pin_init ((const gpio_input_pin_t * )& input );
47
48
}
48
49
}
49
50
@@ -53,20 +54,14 @@ void gpio_mode(gpio_t *obj, PinMode mode) {
53
54
54
55
switch (mode ) {
55
56
case PullNone :
56
- obj -> in_config .isPullEnable = false;
57
- obj -> in_config .pullSelect = kPortPullDown ;
58
57
port_hal_configure_pull (instance , pin , 0 );
59
58
port_hal_pull_select (instance , pin , kPortPullDown );
60
59
break ;
61
60
case PullDown :
62
- obj -> in_config .isPullEnable = true;
63
- obj -> in_config .pullSelect = kPortPullDown ;
64
61
port_hal_configure_pull (instance , pin , 1 );
65
62
port_hal_pull_select (instance , pin , kPortPullDown );
66
63
break ;
67
64
case PullUp :
68
- obj -> in_config .isPullEnable = true;
69
- obj -> in_config .pullSelect = kPortPullUp ;
70
65
port_hal_configure_pull (instance , pin , 1 );
71
66
port_hal_pull_select (instance , pin , kPortPullUp );
72
67
break ;
@@ -78,11 +73,9 @@ void gpio_mode(gpio_t *obj, PinMode mode) {
78
73
void gpio_dir (gpio_t * obj , PinDirection direction ) {
79
74
switch (direction ) {
80
75
case PIN_INPUT :
81
- obj -> isOutput = false;
82
76
sdk_gpio_set_pin_direction (obj -> pinName , kGpioDigitalInput );
83
77
break ;
84
78
case PIN_OUTPUT :
85
- obj -> isOutput = true;
86
79
sdk_gpio_set_pin_direction (obj -> pinName , kGpioDigitalOutput );
87
80
break ;
88
81
}
0 commit comments