@@ -30,20 +30,21 @@ void gpio_init(gpio_t *obj, PinName pin, PinDirection direction) {
3030 return ;
3131
3232 if (direction ) {
33+ gpio_output_pin_t output = {0 };
34+
3335 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 );
3940 } else {
41+ gpio_input_pin_t input = {0 };
4042 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 );
4748 }
4849}
4950
@@ -53,20 +54,14 @@ void gpio_mode(gpio_t *obj, PinMode mode) {
5354
5455 switch (mode ) {
5556 case PullNone :
56- obj -> in_config .isPullEnable = false;
57- obj -> in_config .pullSelect = kPortPullDown ;
5857 port_hal_configure_pull (instance , pin , 0 );
5958 port_hal_pull_select (instance , pin , kPortPullDown );
6059 break ;
6160 case PullDown :
62- obj -> in_config .isPullEnable = true;
63- obj -> in_config .pullSelect = kPortPullDown ;
6461 port_hal_configure_pull (instance , pin , 1 );
6562 port_hal_pull_select (instance , pin , kPortPullDown );
6663 break ;
6764 case PullUp :
68- obj -> in_config .isPullEnable = true;
69- obj -> in_config .pullSelect = kPortPullUp ;
7065 port_hal_configure_pull (instance , pin , 1 );
7166 port_hal_pull_select (instance , pin , kPortPullUp );
7267 break ;
@@ -78,11 +73,9 @@ void gpio_mode(gpio_t *obj, PinMode mode) {
7873void gpio_dir (gpio_t * obj , PinDirection direction ) {
7974 switch (direction ) {
8075 case PIN_INPUT :
81- obj -> isOutput = false;
8276 sdk_gpio_set_pin_direction (obj -> pinName , kGpioDigitalInput );
8377 break ;
8478 case PIN_OUTPUT :
85- obj -> isOutput = true;
8679 sdk_gpio_set_pin_direction (obj -> pinName , kGpioDigitalOutput );
8780 break ;
8881 }
0 commit comments