I need to use the online compiler (long story) so can't use that fix, 
But what i can seem to do is manually configure the uart up and down, and get good results.
UP
    NRF_UART0->PSELTXD = PN_UART_TX;
    NRF_UART0->PSELRXD = PN_UART_RX;
    NRF_UART0->CONFIG = (UART_CONFIG_PARITY_Excluded << UART_CONFIG_PARITY_Pos) | UART_CONFIG_HWFC_Disabled;
    NRF_UART0->BAUDRATE = NRF_UARTE_BAUDRATE_115200;
    NRF_UART0->ENABLE = UART_ENABLE_ENABLE_Enabled;
    NRF_UART0->EVENTS_RXDRDY = 0x0UL;
    NRF_UART0->EVENTS_TXDRDY = 0x0UL;
    NRF_UART0->TASKS_STARTRX = 0x1UL;
    NRF_UART0->TASKS_STARTTX = 0x1UL;
    NRF_UART0->INTENSET = UART_INTENSET_RXDRDY_Msk;
    NVIC_ClearPendingIRQ(UART0_IRQn);
    NVIC_SetPriority(UART0_IRQn, 3);
    NVIC_EnableIRQ(UART0_IRQn);
DOWN
        NVIC_DisableIRQ(UART0_IRQn);
        NRF_UART0->INTENCLR = UART_INTENCLR_RXDRDY_Msk;
        NRF_UART0->TASKS_STOPRX = 0x1UL;
        NRF_UART0->TASKS_STOPTX = 0x1UL;
        NRF_UART0->ENABLE = UART_ENABLE_ENABLE_Disabled;
        NRF_UART0->PSELTXD = 0xFFFFFFFF;
        NRF_UART0->PSELRXD = 0xFFFFFFFF;
        NRF_UART0->PSELRTS = 0xFFFFFFFF;
        NRF_UART0->PSELCTS = 0xFFFFFFFF;
And this gives low 5ua sleep current at sleep. However it means I cannot use printf or scanf etc, i have to manual read or write to the buffers :(
                    
                 
                
             
        
Hi
Having issue with high sleep current after starting SPI channel. If i start the SPI, read a sensor and then sleep using Thread::wait, i get unusually high sleep current, as if the high speed clock is still running.
Why is this, do i need to shut down the SPI first, and if so how do i do this as the SPI class has no function for this?
Same is also true with I2C.
Thanks
B