EFM32片内外设——USART之UART Rx interrupt

来源:本站
导读:目前正在解读《EFM32片内外设——USART之UART Rx interrupt》的相关信息,《EFM32片内外设——USART之UART Rx interrupt》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《EFM32片内外设——USART之UART Rx interrupt》的详细说明。
简介:USART集成了SPI及UART,所以仅仅只有SPI的demo是不够的。因此,才有了这段最简单的UART的运行例程。发送使用循环发送。接收使用中断接收。

硬件准备:TG STK , 将20pin 扩展口的4脚与6脚相连接。第4脚为PD0,Tx, 第6脚为PD1,Rx。

软件流程:UART配置完毕之后,在主函数中不停的发送0到9. 而接收中断中则判断是否接收到了5,如果是则翻转LED灯的状态。结果就可以看到LED灯不停的亮灭。

例程代码如下:

#include <stdint.h>

#include <stdbool.h>

#include "efm32.h"

#include "efm32_chip.h"

#include "efm32_cmu.h"

#include "efm32_gpio.h"

#include "efm32_usart.h"

void USART1_RX_IRQHandler(void)

{

if(USART_Rx(USART1) == 0x5)

{

GPIO_PinOutToggle(gpioPortD, 7);

}

}

void UART_Initial(void)

{

CMU_ClockEnable(cmuClock_HFPER, true);

CMU_ClockEnable(cmuClock_GPIO, true);

CMU_ClockEnable(cmuClock_USART1, true);

USART_InitAsync_TypeDef UART_init = USART_INITASYNC_DEFAULT;

UART_init.baudrate = 9600;

USART_InitAsync(USART1, &UART_init);

USART1->IFC = _USART_IFC_MASK;

NVIC_ClearPendingIRQ(USART1_RX_IRQn);

NVIC_EnableIRQ(USART1_RX_IRQn);

USART1->IEN = USART_IEN_RXDATAV;

GPIO_PinModeSet(gpioPortD,0,gpioModePushPull,1); //tx

GPIO_PinModeSet(gpioPortD,1,gpioModeInput,1); //rx

USART1->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC1;

}

/**************************************************************************//**

* @brief Main function

*****************************************************************************/

/**************************************************************************//**

* @brief Main function

*****************************************************************************/

int main(void)

{

/* Chip errata */

CHIP_Init();

SystemCoreClockUpdate();

UART_Initial();

CMU_ClockEnable(cmuClock_GPIO, true);

GPIO_PinModeSet(gpioPortD, 7, gpioModePushPull,0);

unsigned char ucData = 0;

/* Infinite blink loop */

while(1)

{

unsigned long ulDelay = 100000;

while(ulDelay--);

if(ucData < 10)ucData++;

else ucData = 0;

USART_Tx(USART1,ucData);

}

}

提醒:《EFM32片内外设——USART之UART Rx interrupt》最后刷新时间 2024-03-14 01:10:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《EFM32片内外设——USART之UART Rx interrupt》该内容的真实性请自行鉴别。