diff --git a/include/libopencm3/lpc43xx/gpio.h b/include/libopencm3/lpc43xx/gpio.h index 60528874..8abd5467 100644 --- a/include/libopencm3/lpc43xx/gpio.h +++ b/include/libopencm3/lpc43xx/gpio.h @@ -155,5 +155,6 @@ void gpio_set(u32 gpioport, u32 gpios); void gpio_clear(u32 gpioport, u32 gpios); +void gpio_toggle(u32 gpioport, u32 gpios); #endif diff --git a/lib/lpc43xx/gpio.c b/lib/lpc43xx/gpio.c index 9134f70e..1256fd03 100644 --- a/lib/lpc43xx/gpio.c +++ b/lib/lpc43xx/gpio.c @@ -26,5 +26,10 @@ void gpio_set(u32 gpioport, u32 gpios) void gpio_clear(u32 gpioport, u32 gpios) { - GPIO_CLR(gpioport) = gpios; + GPIO_CLR(gpioport) = gpios; } + +void gpio_toggle(u32 gpioport, u32 gpios) +{ + GPIO_NOT(gpioport) = gpios; +} \ No newline at end of file diff --git a/lib/lpc43xx/libopencm3_lpc43xx_rom_to_ram.ld b/lib/lpc43xx/libopencm3_lpc43xx_rom_to_ram.ld index 850218bc..0270ea8a 100644 --- a/lib/lpc43xx/libopencm3_lpc43xx_rom_to_ram.ld +++ b/lib/lpc43xx/libopencm3_lpc43xx_rom_to_ram.ld @@ -36,7 +36,7 @@ SECTIONS .text : { . = ALIGN(0x400); - _text_ram = . + ORIGIN(ram); /* Start of Code in RAM */ + _text_ram = (. - ORIGIN(rom)) + ORIGIN(ram); /* Start of Code in RAM */ *(.vectors) /* Vector table */ *(.text*) /* Program code */ @@ -53,8 +53,8 @@ SECTIONS __exidx_end = .; _etext = .; - _etext_ram = . + ORIGIN(ram); - _etext_rom = . + ORIGIN(rom_flash); + _etext_ram = (. - ORIGIN(rom)) + ORIGIN(ram); + _etext_rom = (. - ORIGIN(rom)) + ORIGIN(rom_flash); .data : { _data = .;