nrf 52832 uart的使用

1、平台的条件

  1.1 软件平台:sdk14.2
  1.2 硬件平台: nrf52832

2 说明:
只是介绍代码怎么使用,直接点
QQ: 1297311998 ,如果有什么问题,请高手不吝赐教

2、如何使用

2.1 添加文件

nrf_drv_uart.c(路径:components\drivers_nrf\uart)
和app_uart.c(路径:components\libraries\uart)
注意: 没用fifo的方式
nrf 52832 uart的使用_第1张图片

2.2 添加.h文件

#ifndef SIMPLE_UART_H__
#define SIMPLE_UART_H__


#include 
#include 

// 引脚定义------------、
#define Rx_PIN          8 //
#define Tx_PIN          9 //


//#define HWFC           true

#define MAX_TEST_DATA_BYTES     (15U)                /**< max number of test bytes to be used for tx and rx. */
#define UART_TX_BUF_SIZE 256                         /**< UART TX buffer size. */
#define UART_RX_BUF_SIZE 256                         /**< UART RX buffer size. */


void init_simple_uart(void);
void uint_simple_uart(void);

void uart_send(uint8_t *str,uint16_t len);
void  task_process_uart_data(void);
#endif

2.3 .c 文件

uart 初始化

static void uart_error_handle(app_uart_evt_t * p_event)
{
    if (p_event->evt_type == APP_UART_COMMUNICATION_ERROR)
    {
//        APP_ERROR_HANDLER(p_event->data.error_communication);
    }
    else if (p_event->evt_type == APP_UART_FIFO_ERROR)
    {
//        APP_ERROR_HANDLER(p_event->data.error_code);
	}
}

	
void init_simple_uart(void)
{
    uint32_t err_code;
    const app_uart_comm_params_t comm_params =
    {
      {
          Rx_PIN,
          Tx_PIN,
          0,
          0,
          APP_UART_FLOW_CONTROL_DISABLED,
          false,
          NRF_UART_BAUDRATE_9600
      },
  } ;
    APP_UART_FIFO_INIT(&comm_params,
                         UART_RX_BUF_SIZE,
                         UART_TX_BUF_SIZE,
                         uart_error_handle,
                         APP_IRQ_PRIORITY_LOWEST,
                         err_code);

    APP_ERROR_CHECK(err_code);
}

uart send data

void uart_send(uint8_t *str,uint16_t len)
{
	uint16_t i,counter;
	for(i=0;i<len;i++)
	{
		counter=0;
	    while(NRF_SUCCESS!=app_uart_put(str[i]) && counter++<16000);
	}
}

uart 接收数据,放在main函数

void task_process_uart_data(void)
{
#define TIME_OUT_MS  (100/10)
#define BUF_MAX_LEN 100
   
    uint8_t dataout;
    static uint8_t sta=0,buf[BUF_MAX_LEN+3],len,left,cs;
    
	  while(NRF_SUCCESS== app_uart_get(&dataout))
      {         	  
             RTT_UART_LOG("out:%02x\r\n",dataout);
      }            
       return;
}

接收函数的执行

int main(void)
{
	Peri_init();
	ble_Init();
	start_ibeacon_timer();
	sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
	
	
	BLE_RTT("DEVICE REST : \r\n ");
	
    for (;;)
    {
    	FeedWdog(); 
		power_manage();
        task_1s();
         // uart 接收函数
        task_process_uart_data();

    }
}

关闭uart

void uint_simple_uart(void)
{
	app_uart_close();
}

你可能感兴趣的:(nRF52832_ble)