EFM32例程——LEUART
硬件:EFM32GG230512
工具:keil5
LEUART实验
LEUART测试,leuart串口接收和发送
初始化
/*********************************************Copyright (c)***********************************************
** File name: leuart.c
** Created by: Gui
** Version: V1.0.0
** Descriptions: LEUART测试,leuart串口接收和发送
*********************************************************************************************************/
#include "leuart.h"uint32_t GucLeuartIF; /* 用于存储LEUART中断标志位 */
uint8_t get_buff[32];
uint8_t leuart_data_len = 0;void LEUART0_IRQHandler(void){GucLeuartIF = LEUART_IntGet(LEUART0); /* 获取中断标志 */LEUART_IntClear(LEUART0, GucLeuartIF); /* 清除中断标志位 */ get_buff[leuart_data_len] = (uint8_t)LEUART0->RXDATA;LEUART_Tx(LEUART0,get_buff[leuart_data_len]);leuart_data_len++;if(leuart_data_len > 32)leuart_data_len = 0;
}void leuart_init(void){// CMU_ClockEnable(cmuClock_GPIO,true); CMU_ClockEnable(cmuClock_CORELE,true);CMU_ClockEnable(cmuClock_LEUART0,true);CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFRCO);GPIO_PinModeSet(gpioPortE, 14, gpioModePushPull, 1); /* 配置PD4为推挽模式 */GPIO_PinModeSet(gpioPortE, 15, gpioModeInputPull, 1); /* 配置PD5为输入上拉模式 */LEUART_Init_TypeDef tLeuartInit = { /* LEUART初始化结构体 */.enable = leuartEnable, /* 使能收发 */.refFreq = 0, /* 一般设为0 */.baudrate = 9600, /* 波特率 */.databits = leuartDatabits8, /* 数据位 */.parity = leuartNoParity, /* 奇偶校验 */.stopbits = leuartStopbits1 /* 停止位 */};LEUART_Reset(LEUART0); /* 复位LEUART */LEUART_Init(LEUART0, &tLeuartInit);// LEUART0->CTRL = LEUART0->CTRL & (~(_LEUART_CTRL_AUTOTRI_MASK)) | LEUART_CTRL_AUTOTRI;
// LEUART0->CTRL = LEUART0->CTRL & (~(_LEUART_CTRL_RXDMAWU_MASK));//使能发送接收管脚LEUART0->ROUTE = LEUART_ROUTE_TXPEN | LEUART_ROUTE_RXPEN | LEUART_ROUTE_LOCATION_LOC2;LEUART_IntEnable(LEUART0, LEUART_IEN_RXDATAV); /* 使能接收中断 */NVIC_EnableIRQ(LEUART0_IRQn); /* 使能LEUART0中断向量 */
}
main
/*********************************************Copyright (c)***********************************************
** File name: main.c
** Created by: Gui
** Version: V1.0.0
** Descriptions: LEUART测试,leuart串口接收和发送
*********************************************************************************************************/
#include "system.h"
#include "em_device.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_int.h"
#include "delay.h"
#include "leuart.h"
#include "bsp_led.h"uint32_t g_chip_tick = 0;int main(){CMU_ClockEnable(cmuClock_HFPER, true); //前置芯片设置CMU_ClockEnable(cmuClock_GPIO, true);if(SysTick_Config(SystemCoreClockGet()/1000))while(1);//1ms的systick中断led_init();//PD4 PD5leuart_init();{uint8_t test_buf[10] = "0123456789";uint8_t i = 0;for(i=0;i<10;i++){LEUART_Tx(LEUART0,test_buf[i]);}}while(1){EMU_EnterEM2(false); }
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
