X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm%2Fao_led.c;h=ee313b6fa5b8e16b9dd83f9cdea9a937326d1965;hb=e57ab2a7bfb69c0ef9b5b7fa8e53e20a500e7c6c;hp=d649f3d7a03a71559bff81fbb638d35c2aab19bb;hpb=d7ddfd4e6d75e50ca64a342181f5c52e9f4919af;p=fw%2Faltos diff --git a/src/stm/ao_led.c b/src/stm/ao_led.c index d649f3d7..ee313b6f 100644 --- a/src/stm/ao_led.c +++ b/src/stm/ao_led.c @@ -22,25 +22,28 @@ __pdata uint16_t ao_led_enable; void ao_led_on(uint16_t colors) { - LED_PORT.odr |= (colors & ao_led_enable); + LED_PORT->bsrr = (colors & ao_led_enable); } void ao_led_off(uint16_t colors) { - LED_PORT.odr &= ~(colors & ao_led_enable); + LED_PORT->bsrr = (uint32_t) (colors & ao_led_enable) << 16; } void ao_led_set(uint16_t colors) { - LED_PORT.odr = (LED_PORT.odr & ~(ao_led_enable)) | (colors & ao_led_enable); + uint16_t on = colors & ao_led_enable; + uint16_t off = ~colors & ao_led_enable; + + LED_PORT->bsrr = off << 16 | on; } void ao_led_toggle(uint16_t colors) { - LED_PORT.odr ^= (colors & ao_led_enable); + LED_PORT->odr ^= (colors & ao_led_enable); } void @@ -58,11 +61,11 @@ ao_led_init(uint16_t enable) stm_rcc.ahbenr |= (1 << LED_PORT_ENABLE); ao_led_enable = enable; - LED_PORT.odr &= ~enable; + LED_PORT->odr &= ~enable; for (bit = 0; bit < 16; bit++) { if (enable & (1 << bit)) { - stm_moder_set(&LED_PORT, bit, STM_MODER_OUTPUT); - stm_otyper_set(&LED_PORT, bit, STM_OTYPER_PUSH_PULL); + stm_moder_set(LED_PORT, bit, STM_MODER_OUTPUT); + stm_otyper_set(LED_PORT, bit, STM_OTYPER_PUSH_PULL); } } }