#include "uart.h"
#include "string.h"
uint8_t rxbuff[10];
uint8_t txbuff[207] = { 0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A };
uint32_t RX_CNT = 0;
uint32_t RX_CNT_1 = 0;
uint8_t tx_flag = 0;
void UartSendByte(uint8_t* String)
{
while (tx_flag);
if (tx_flag == 0)
{
tx_flag = 1;
NRF_UARTE0->TXD.PTR = (uint32_t)String;
NRF_UARTE0->TXD.MAXCNT = 207;
NRF_UARTE0->TASKS_STARTTX = 1;
}
}
void UARTE0_UART0_IRQHandler(void)
{
if (NRF_UARTE0->EVENTS_ENDRX)
{
RX_CNT_1 = rxbuff[0];
NRF_UARTE0->EVENTS_ENDRX = 0;
}
else if (NRF_UARTE0->EVENTS_ENDTX)
{
tx_flag = 0;
NRF_UARTE0->EVENTS_ENDTX = 0;
}
else if (NRF_UARTE0->EVENTS_RXDRDY)
{
RX_CNT++;
NRF_UARTE0->EVENTS_RXDRDY = 0;
NRF_UARTE0->TASKS_STARTRX = 1;
}
}
void UartConfig(void)
{
NRF_UARTE0->PSEL.RXD = 8;
NRF_UARTE0->PSEL.TXD = 6;
NRF_UARTE0->BAUDRATE = UART_BAUDRATE_BAUDRATE_Baud460800;
NRF_UARTE0->CONFIG = 0X00;
NRF_UARTE0->RXD.PTR = (uint32_t)rxbuff;
NRF_UARTE0->RXD.MAXCNT = 1;
NRF_UARTE0->TASKS_STARTRX = 1;
NRF_UARTE0->TXD.PTR = (uint32_t)txbuff;
NRF_UARTE0->TXD.MAXCNT = 207;
NRF_UARTE0->EVENTS_ENDTX = 0;
NRF_UARTE0->EVENTS_ENDRX = 0;
NRFX_IRQ_PRIORITY_SET(nrfx_get_irq_number((void*)NRF_UARTE0), APP_IRQ_PRIORITY_HIGH);
NRFX_IRQ_ENABLE(nrfx_get_irq_number((void*)NRF_UARTE0));
NRF_UARTE0->INTENSET = 0x114;
NRF_UARTE0->ENABLE = 0x8;
NRF_UARTE0->TASKS_STARTTX = 1;
}
#ifndef _UART_H
#define _UART_H
#include "nrf_drv_uart.h"
#include "nrf.h"
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
extern uint8_t tx_flag;
void UartSendByte(uint8_t * String);
void UartInit(void);
void UartConfig(void);
#endif