6 #include <hal_gpio_def.h>
8 #define HAL_GPIO_PORT_BITS 3
11 GPIO_TypeDef *hal_gpio_get_port_base(unsigned port)
13 char *p = (char*)GPIO0_BASE;
14 p += ((char*)GPIO1_BASE - (char*)GPIO0_BASE) * port;
15 return (GPIO_TypeDef *)p;
19 unsigned hal_gpio_get_port_num(unsigned gpio)
22 return gpio & ((1 << HAL_GPIO_PORT_BITS) - 1);
26 GPIO_TypeDef *hal_gpio_get_base(unsigned gpio)
28 return hal_gpio_get_port_base(hal_gpio_get_port_num(gpio));
32 int hal_gpio_get_value(unsigned gpio)
34 return ((hal_gpio_get_base(gpio)->FIOPIN) >> (gpio & 0x1f)) & 1;
38 void hal_gpio_set_value(unsigned gpio, int value)
41 hal_gpio_get_base(gpio)->FIOSET = 1 << (gpio & 0x1f);
43 hal_gpio_get_base(gpio)->FIOCLR = 1 << (gpio & 0x1f);
47 int hal_gpio_direction_input(unsigned gpio)
49 hal_gpio_get_base(gpio)->FIODIR &= ~(1 << (gpio & 0x1f));
54 int hal_gpio_direction_output(unsigned gpio, int value)
56 hal_gpio_set_value(gpio, value);
57 hal_gpio_get_base(gpio)->FIODIR |= (1 << (gpio & 0x1f));
61 int hal_pin_conf_fnc(unsigned gpio, int fnc);
63 int hal_pin_conf_mode(unsigned gpio, int mode);
65 int hal_pin_conf_od(unsigned gpio, int od);
67 int hal_pin_conf_set(unsigned gpio, int conf);
70 int hal_pin_conf(unsigned gpio)
72 return hal_pin_conf_set(gpio, gpio);
75 #endif /*_HAL_GPIO_H_*/