Skip to content

Commit 8c88e09

Browse files
committed
gpio_t struct only needs pinName
- gpio_init creates init objects on stack
1 parent 6b96d4e commit 8c88e09

File tree

2 files changed

+13
-23
lines changed

2 files changed

+13
-23
lines changed

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K64F/gpio_api.c

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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) {
7873
void 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
}

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K64F/gpio_object.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@ extern "C" {
2323
#endif
2424

2525
typedef struct {
26-
uint32_t pinName; /*!< Virtual pin name from enum defined by user.*/
27-
gpio_input_pin_config_t in_config; /*!< Input pin configuration structure.*/
28-
gpio_output_pin_config_t out_config; /*!< Input pin configuration structure.*/
29-
uint8_t isOutput; /*!< Input/Output */
26+
uint32_t pinName;
3027
} gpio_t;
3128

3229
static inline void gpio_write(gpio_t *obj, int value) {

0 commit comments

Comments
 (0)