EFM32片内外设--LEUart之基本操作
来源:互联网 发布:美国网络战司令部 编辑:程序博客网 时间:2024/05/16 13:58
LEUart 最基本的例程:
硬件准备: TG STK, LEUart0, Tx:PD4, Rx:PD5. TG STK的20pin扩展口上已经有这两个IO口,分别是12Pin(PD4),14Pin(PD5)。
软件例程:
#include <stdint.h>
#include <stdbool.h>
#include "efm32.h"
#include "efm32_chip.h"
#include "efm32_cmu.h"
#include "efm32_leuart.h"
#include "efm32_gpio.h"
unsigned char ucString[] = {
"Hello world,This is a test for LEUart from Gecko.\r\n"
};
#define LINK_UART_TX_PORT gpioPortD
#define LINK_UART_TX_BIT 4
#define LINK_UART_TX_MODE gpioModePushPull
#define LINK_UART_RX_PORT gpioPortD
#define LINK_UART_RX_BIT 5
#define LINK_UART_RX_MODE gpioModeInputPull
#define LINK_CMU_UART cmuClock_LEUART0
#define LINK_UART LEUART0
#define LINK_UART_ROUTE_EN LEUART_ROUTE_TXPEN | LEUART_ROUTE_RXPEN
#define LINK_UART_ROUTE_LOCATION LEUART_ROUTE_LOCATION_LOC0
#define LINK_REF_FREQUENCY CMU_ClockFreqGet(LINK_CMU_UART)
#define LINK_UART_IRQ LEUART0_IRQn
#define LEUART_STATUS LEUART0->STATUS
#define UARTTXC 0x08
void LEUart_Init(void)
{
CMU_ClockEnable(cmuClock_HFPER, true);
CMU_ClockEnable(cmuClock_GPIO, true);
CMU_ClockEnable(cmuClock_CORELE, true);
CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFXO);
CMU_ClockEnable(cmuClock_LEUART0, true);
/* Defining the LEUART1 initialization data */
LEUART_Init_TypeDef leuart1Init =
{
.enable = leuartEnable, /* Activate data reception on LEUn_TX pin. */
.refFreq = LINK_REF_FREQUENCY, /* Inherit the clock frequenzy from the LEUART clock source */
.baudrate = 9600, /* Baudrate = 9600 bps */
.databits = leuartDatabits8, /* Each LEUART frame containes 8 databits */
.parity = leuartNoParity, /* No parity bits in use */
.stopbits = leuartStopbits1, /* Setting the number of stop bits in a frame to 2 bitperiods */
};
LEUART_Init_TypeDef Leuart_Init = leuart1Init;
/* Reseting and initializing LEUART1 */
LEUART_Reset(LINK_UART);
/* Route LEUART1 TX pin to DMA location 0 */
LINK_UART->ROUTE = LINK_UART_ROUTE_EN | LINK_UART_ROUTE_LOCATION;
LEUART_Init(LINK_UART, &Leuart_Init);
//LEUART_IntEnable(LINK_UART, LEUART_IEN_RXDATAV);
//NVIC_SetPriority(LINK_UART_IRQ,7);
/* Enable LEUART1 interrupt vector */
//NVIC_EnableIRQ(LINK_UART_IRQ);
/* Enable GPIO for LEUART0. */
GPIO_PinModeSet(LINK_UART_TX_PORT, LINK_UART_TX_BIT, LINK_UART_TX_MODE, 1);
GPIO_PinModeSet(LINK_UART_RX_PORT, LINK_UART_RX_BIT, LINK_UART_RX_MODE, 1);
}
/**************************************************************************//**
* @brief Main function
*****************************************************************************/
int main(void)
{
/* Chip errata */
CHIP_Init();
LEUart_Init();
while(1)
{
unsigned long ulDelay = 100000;
while(ulDelay--);
for(unsigned char i = 0; i < 53; i++)
{
LEUART_Tx(LINK_UART, ucString[i]);
}
}
}
以上是基本的LEUart的Demo。
- EFM32片内外设--LEUart之基本操作
- EFM32片内外设--DMA之LeUart Tx Rx
- EFM32片内外设--LEUart抖动误差
- EFM32片内外设Timer之基本操作
- EFM32片内外设--RMU基本操作
- EFM32片内外设--WDT基本操作
- EFM32片内外设--VCMP 基本操作
- EFM32片内外设--RMU基本操作
- EFM32片内外设--LEUart高波特率测试
- EFM32片内外设--ACMP之基本应用
- EFM32片内外设--USART之SPI 基本polling
- EFM32片内外设--MSC之一般操作
- EFM32片内外设--AES基本介绍
- EFM32片内外设--ADC 基本例程
- EFM32片内外设--LCD Bitband操作
- EFM32片内外设--DAC之tips
- EFM32片内外设--LCD之动画
- EFM32片内外设 -- Systick
- Linux-2.6.32.2内核在mini2440上的移植(一)---构建自主开发环境
- arm-linux-gcc安装与使用
- web安装包中的- iis网站自动配置脚本
- 安卓手机系统可删除的自带软件大集合
- Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- EFM32片内外设--LEUart之基本操作
- 排序算法 - 基数排序(C++)
- Linux-2.6.32.2内核在mini2440上的移植(三)---DM9000网卡驱动移植
- MyEclipse链接Oracle数据12505错误
- Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(1)
- C语言main函数
- 数学之美系列十二:余弦定理和新闻的分类
- Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(2)
- Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(3)