博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EFR32FG1开发教程2--串口
阅读量:3721 次
发布时间:2019-05-22

本文共 4953 字,大约阅读时间需要 16 分钟。

前言:直接上代码吧

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********************************/

转载地址:http://hfbnn.baihongyu.com/

你可能感兴趣的文章
Numpy的梯度函数 gradient
查看>>
监听器 ServletContextListener 和 ServletContextAttributeListener
查看>>
Servlet中Session和Context监听器
查看>>
Pandas库的DataFrame数据类型及其操作详解
查看>>
Pandas数据类型的操作
查看>>
Pandas库的数据类型的操作和运算
查看>>
python3.7 安装TVTK库 与遇到的问题及解决方法
查看>>
Pandas库 数据的基本统计分析
查看>>
Pandas库 数据的 基本和累计 统计分析
查看>>
JAVA 项目---学生成绩管理系统(附标准源码)使用文件存储
查看>>
Pycharm 的 no python interpreter configured for the project错误
查看>>
Scrapy框架---第一个小实例及TabError: inconsistent use of tabs and spaces in indentation解决方法
查看>>
HTML给图片加上超链接
查看>>
JSP的内置隐式对象及其使用
查看>>
使用tvtk库建立一个三维对象
查看>>
简单的网页设计,以学校官网为例
查看>>
JDBC 连接MySql报错,The server time zone value is unrecognized
查看>>
使用SQLYog连接mysql报错 plugin caching_sha2_password could not be loaded
查看>>
MYSQL建表语句Warning:“utf8”目前是字符集UTF8MB3的别名,但在将来的版本中将是UTF8MB4的别名。请考虑使用UTF8MB4,以免造成歧义。
查看>>
idea创建项目及配置详解和测试代码
查看>>