EFR32FG1开发教程2--串口

前言:直接上代码吧

bsp_usart.c

/**
  ******************************************************************************
  * @file    bsp_usart.c
  * @author  Garen
  * @version V1.0.0
  * @date    2018-04-19
  * @brief   对USART操作,功能如下:   
  *           + USART初始化
  *           + USART发送一个字节
  *           + USART发送字符串
  *
  ******************************************************************************
  */
/* Includes ------------------------------------------------------------------*/
#include "bsp_usart.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/**
  * @brief  初始化usart
  * @retval None
  */
void BSP_UsartInit(void)
{
  /* Enable peripheral clocks */
  CMU_ClockEnable(cmuClock_HFPER, true);
  /* Configure GPIO pins */
  CMU_ClockEnable(cmuClock_GPIO, true);
  /* To avoid false start, configure output as high */
  GPIO_PinModeSet(BSP_SERIAL_APP_TX_PORT, BSP_SERIAL_APP_TX_PIN, gpioModePushPull, 1);
  GPIO_PinModeSet(BSP_SERIAL_APP_RX_PORT, BSP_SERIAL_APP_RX_PIN, gpioModeInput, 0);
  USART_TypeDef           *usart = RETARGET_UART;
  USART_InitAsync_TypeDef init   = USART_INITASYNC_DEFAULT;
  CMU_ClockEnable(RETARGET_CLK, true);
  /* Configure USART for basic async operation */
  init.enable = usartDisable;
  USART_InitAsync(usart, &init);
  /* Enable pins at correct UART/USART location. */
  usart->ROUTEPEN = USART_ROUTEPEN_RXPEN | USART_ROUTEPEN_TXPEN;
  usart->ROUTELOC0 = (usart->ROUTELOC0& ~(_USART_ROUTELOC0_TXLOC_MASK| _USART_ROUTELOC0_RXLOC_MASK))\
                     | (BSP_SERIAL_APP_TX_LOC << _USART_ROUTELOC0_TXLOC_SHIFT) \
                     | (BSP_SERIAL_APP_RX_LOC << _USART_ROUTELOC0_RXLOC_SHIFT);
  /* Clear previous RX interrupts */
  USART_IntClear(RETARGET_UART, USART_IF_RXDATAV);
  NVIC_ClearPendingIRQ(RETARGET_IRQn);
  /* Enable RX interrupts */
  USART_IntDisable(RETARGET_UART, USART_IF_RXDATAV);
  NVIC_DisableIRQ(RETARGET_IRQn);
  /* Finally enable it */
  USART_Enable(usart, usartEnable);
}

/**
  * @brief  发送一个字节
  * @param  pUSARTx:表示采用哪个串口发送.如USART0.USART1.
  * @param  ch:待发送的char
  * @retval None
  */
void BSP_UsartSendByte(uint8_t ch)
{
  USART_Tx(RETARGET_UART, ch);
}

/**
  * @brief  发送字符串
  * @param  pUSARTx:表示采用哪个串口发送.如USART0.USART1.
  * @param  str:待发送字符串地址
  * @retval None
  */
void BSP_UsartSendString(char *str)
{
  uint32_t k = 0;
  do
  {
    BSP_UsartSendByte((uint8_t)*(str+k));
    k++;
  }
  while(*(str + k) != '\0');
}

bsap_usart.h

/**
  ******************************************************************************
  * @file    bsp_usart.h
  * @author  Garen
  * @version V1.0.0
  * @date    2018-04-19
  * @brief   bsp_usart.c文件对应的头文件,函数声明.结构体定义等作用
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __BSP_USART_H
#define __BSP_USART_H

#ifdef __cplusplus
 extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "em_chip.h"
#include "em_cmu.h"
#include "em_emu.h"
#include "em_usart.h"
/* Exported types ------------------------------------------------------------*/
// $[SERIAL]
#define RETARGET_UART                         USART0
#define RETARGET_CLK                          cmuClock_USART0
#define RETARGET_IRQ_NAME                     USART0_RX_IRQHandler
#define RETARGET_IRQn                         USART0_RX_IRQn
   
#define HAL_SERIAL_USART0_ENABLE              (0)
#define BSP_SERIAL_APP_PORT                   (HAL_SERIAL_PORT_USART0)
#define HAL_SERIAL_LEUART0_ENABLE             (0)
#define HAL_SERIAL_USART1_ENABLE              (0)
#define HAL_SERIAL_RXWAKE_ENABLE              (0)
#define BSP_SERIAL_APP_RX_PIN                 (1U)
#define BSP_SERIAL_APP_RX_PORT                (gpioPortA)
#define BSP_SERIAL_APP_RX_LOC                 (0U)

#define BSP_SERIAL_APP_TX_PIN                 (0U)
#define BSP_SERIAL_APP_TX_PORT                (gpioPortA)
#define BSP_SERIAL_APP_TX_LOC                 (0U)

#define HAL_SERIAL_APP_RX_QUEUE_SIZE          (128UL)
#define HAL_SERIAL_APP_BAUD_RATE              (115200UL)
#define HAL_SERIAL_APP_RXSTOP                 (16UL)
#define HAL_SERIAL_APP_RXSTART                (16UL)
#define HAL_SERIAL_APP_TX_QUEUE_SIZE          (128UL)
#define HAL_SERIAL_APP_FLOW_CONTROL           (HAL_USART_FLOW_CONTROL_NONE)
// [SERIAL]$
/* Exported functions prototypes---- -----------------------------------------*/
void BSP_UsartInit(void);
void BSP_UsartSendByte(uint8_t ch);
void BSP_UsartSendString(char *str);

#ifdef __cplusplus
}
#endif

#endif /*__BSP_USART_H */

/******************************** (C)END OF FILE********************************/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EFR32FG12低功耗无线片上系统 • 高性能 32 位 40 MHz ARM Cortex®-M4,带有 DSP 指令和浮 点单元,可实现高效的信号处理 • 最高 256 kB 闪存程序存储器 • 最高 32 kB RAM 数据存储器 • 2.4 GHz 和 1 GHz 以下无线电操作 • 发射功率: • 2.4 GHz 无线电:最高 19 dBm • 1 GHz 以下的无线电:最高 20 dBm • 低功耗 • 在 169 MHz、 38.4 kbps、GFSK 的条件下,RX 电流为 8.4 mA • 在 2.4 GHz、1 Mbps、GFSK 的条件下,RX 电流为 8.8 mA • 在 2.4 GHz、250 kbps、DSSS-OQPSK 的条件下,RX 电流为 10.2 mA • 在 2.4 GHz、0 dBm 输出功率的条件下,TX 电流为 8.5 mA • 在 868 MHz、14 dBm 输出功率的条件下,TX 电流为 35.3 mA • 在活动模式 (EM0) 下,运行功耗为 67 μA/MHz • 在 EM2 深度睡眠模式下,电流为 1.3 μA(保留 16 kB RAM,RTCC 从 LFRCO 中运行) • 无线模块唤醒,带有信号强度检测,前导模式检测,帧检测 和超时功能 • 高接收器性能 • 在 2.4 GHz、1 Mbit/s GFSK 的条件下,灵敏度为 -93.8 dBm • 在 2.4 GHz、250 kbps DSSS-OQPSK 的条件下,灵敏度为 -103.3 dBm • 在 915 MHz、600 bps、GFSK 的条件下,灵敏度为 -126.2 dBm • 在 868 MHz、2.4 kbps、GFSK 的条件下,灵敏度为 -120.6 dBm • 在 433 MHz、4.8 kbps、OOK 的条件下,灵敏度为 -109.9 dBm • 在 169 MHz、38.4 kbps、GFSK 的条件下,灵敏度为 -112.2 dBm • 支持的调制格式 • 2/4 (G)FSK,可配置完整波形 • BPSK / DBPSK TX • OOK / ASK • 已调制好波形的 OQPSK / (G)MSK • 可配置的 DSSS 和 FEC
EFR32FG12低功耗无线片上系统 • 高性能 32 位 40 MHz ARM Cortex®-M4,带有 DSP 指令和浮 点单元,可实现高效的信号处理 • 最高 256 kB 闪存程序存储器 • 最高 32 kB RAM 数据存储器 • 2.4 GHz 和 1 GHz 以下无线电操作 • 发射功率: • 2.4 GHz 无线电:最高 19 dBm • 1 GHz 以下的无线电:最高 20 dBm • 低功耗 • 在 169 MHz、 38.4 kbps、GFSK 的条件下,RX 电流为 8.4 mA • 在 2.4 GHz、1 Mbps、GFSK 的条件下,RX 电流为 8.8 mA • 在 2.4 GHz、250 kbps、DSSS-OQPSK 的条件下,RX 电流为 10.2 mA • 在 2.4 GHz、0 dBm 输出功率的条件下,TX 电流为 8.5 mA • 在 868 MHz、14 dBm 输出功率的条件下,TX 电流为 35.3 mA • 在活动模式 (EM0) 下,运行功耗为 67 μA/MHz • 在 EM2 深度睡眠模式下,电流为 1.3 μA(保留 16 kB RAM,RTCC 从 LFRCO 中运行) • 无线模块唤醒,带有信号强度检测,前导模式检测,帧检测 和超时功能 • 高接收器性能 • 在 2.4 GHz、1 Mbit/s GFSK 的条件下,灵敏度为 -93.8 dBm • 在 2.4 GHz、250 kbps DSSS-OQPSK 的条件下,灵敏度为 -103.3 dBm • 在 915 MHz、600 bps、GFSK 的条件下,灵敏度为 -126.2 dBm • 在 868 MHz、2.4 kbps、GFSK 的条件下,灵敏度为 -120.6 dBm • 在 433 MHz、4.8 kbps、OOK 的条件下,灵敏度为 -109.9 dBm • 在 169 MHz、38.4 kbps、GFSK 的条件下,灵敏度为 -112.2 dBm • 支持的调制格式 • 2/4 (G)FSK,可配置完整波形 • BPSK / DBPSK TX • OOK / ASK • 已调制好波形的 OQPSK / (G)MSK • 可配置的 DSSS 和 FEC
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值