EFM32超低功耗LEUART例程分享

#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”

#include “led.h”

volatile uint32_t msTicks;

void Delay(uint32_t dlyTicks);

LEUART_Init_TypeDef leuart0Init =
{
.enable = leuartEnable,
.refFreq = 0,
.baudrate = 9600,
.databits = leuartDatabits8,
.parity = leuartNoParity,
.stopbits = leuartStopbits2,
};

#define SER_BUF_SIZE (128)
#define SER_BUF_MASK (SER_BUF_SIZE-1ul)

#define SER_BUF_RESET(serBuf) (serBuf.rdIdx = serBuf.wrIdx = 0)
#define SER_BUF_WR(serBuf, dataIn) (serBuf.data[SER_BUF_MASK & serBuf.wrIdx++] = (dataIn))
#define SER_BUF_RD(serBuf) (serBuf.data[SER_BUF_MASK & serBuf.rdIdx++])
#define SER_BUF_EMPTY(serBuf) (serBuf.rdIdx == serBuf.wrIdx)
#define SER_BUF_FULL(serBuf) (serBuf.rdIdx == serBuf.wrIdx+1)
#define SER_BUF_COUNT(serBuf) (SER_BUF_MASK & (serBuf.wrIdx - serBuf.rdIdx))

typedef struct __SER_BUF_T {
unsigned char data[SER_BUF_SIZE];
unsigned int wrIdx;
unsigned int rdIdx;
} SER_BUF_T;
SER_BUF_T serBuffer;

void SysTick_Handler(void)
{
msTicks++;
}

void Delay(uint32_t dlyTicks)
{
uint32_t curTicks;

curTicks = msTicks;
while ((msTicks - curTicks) < dlyTicks) ;
}

void initLeuart(void)
{

LEUART_Reset(LEUART0);
LEUART_Init(LEUART0, &leuart0Init);

LEUART0->ROUTE = LEUART_ROUTE_TXPEN | LEUART_ROUTE_RXPEN |
LEUART_ROUTE_LOCATION_LOC0;

GPIO_PinModeSet(gpioPortD,
4,
gpioModePushPull,
1);
GPIO_PinModeSet(gpioPortD,
5,
gpioModePushPull,
1);
LEUART_IntEnable(LEUART0, LEUART_IEN_RXDATAV);

NVIC_EnableIRQ(LEUART0_IRQn);

}

void LEUART0_IRQHandler(void)
{
uint8_t RxData;
uint32_t leuart_IntFlag;

leuart_IntFlag = LEUART_IntGet(LEUART0);

if ( leuart_IntFlag & LEUART_IF_RXDATAV) {
RxData = LEUART0->RXDATA;
if (SER_BUF_FULL(serBuffer) == 0) {
SER_BUF_WR(serBuffer, RxData);
}
}

LEUART_IntClear(LEUART0, ~_LEUART_IFC_RESETVALUE);

}

int main(void)
{

CHIP_Init();

CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFXO);
CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFXO);

CMU_ClockEnable(cmuClock_CORELE, true);
CMU_ClockEnable(cmuClock_GPIO, true);
CMU_ClockEnable(cmuClock_LEUART0, true);

initLeuart();
SER_BUF_RESET(serBuffer);

if (SysTick_Config(CMU_ClockFreqGet(cmuClock_CORE) / 1000)) while (1) ;

LED_Init();

while (1)
{
LED_Toggle();

if (SER_BUF_EMPTY(serBuffer) == 0) {LEUART_Tx(LEUART0, SER_BUF_RD(serBuffer));
}
//Delay(100);

}
}

EFM32 LEUART相关推荐

  1. EFM32 LEUART波特率计算

    一.说明 LEUART和EFM32单片机中的其他LE外围设备一样,可以由三个不同的时钟源驱动,低频射频振荡器(LFRCO).低频晶体振荡器(LFXO)和除以2或4的高频核心时钟(HFCORECLK_L ...

  2. efm32芯片电压_解读GP21+EFM32低功耗热量表电路

    基于Energymicro公司的32位Cortex-M3内核的超低功耗微控制器EFM32与ACAM公司的高集成度TDC-GP21芯片推出的超声波热量表方案,能够充分发挥EFM32的超低功耗与高运算能力 ...

  3. EFM32 学习调试记录

    1.基本问题 1.1.J-Link Failed to get CPU status after 4 retries Retry 1.2.CMU_ClockEnable(cmuClock_CORELE ...

  4. EFM32智能门锁应用案例

    转载自http://www.elecfans.com/analog/20111024225773.html 概述 智能门锁是指区别于传统机械锁具,在用户识别.安全性.管理性方面更加智能化的锁具.它是智 ...

  5. 2017.11.7 Python 制作EFM32/ AVR批量烧录工具

    Customer need program quickly asap. ok,I need to set up a table for test. 1 reference data http://ww ...

  6. EFM32片内外设--VCMP 基本操作

    VCMP基本操作例程,是从Application Note中抠出来的. #include "stdio.h" #include "efm32.h" #inclu ...

  7. 2017.10.23 Arduino Atmel EFM32低功耗监测

    mark:因为最近一直调试(维护)客户的EFM32,和其他系列的Atmel芯片.对atmel不熟悉,做点功课. 1. 自建Arduino 最小系统(原来树莓派都是Atmel的芯片) http://ww ...

  8. efm32芯片电压_小壁虎PK小蝴蝶(EFM32 vs STM32L)

    近日因要使用低功耗MCU,故花了点时间来研究ARM cortex M系列的低功耗MCU,今天的主角,相信熟悉 ARM Cortex 单片机的大神们,一听这名字,就知道是谁了. -EnergyMicro ...

  9. efm32芯片电压_谁说壁虎没用?用efm32做个USB电压电流表(可诱导QC2.0)

    在疯狂的撸pos的过程中,坛友看重的最多是电池,紧接着就是stm32/gd32单片机,而核心为efm32一派的pos机,因为资料少,没调试工具,就被打上了:没卵用,垃圾,便宜货等等的名号,被大家仍在墙 ...

最新文章

  1. 用C语言实现控制台模拟显示时
  2. 关于extjs中动态添加TabPanel的tab项并以iframe显示的整理(转)
  3. oracle11g的体系结构有几种,Oracle11g 体系结构
  4. pycharm打包.py程序为可执行文件exe
  5. 大型布线:Java云应用程序缺少的技术
  6. html:(2):制作第一个网页和html和css的关系
  7. mysql 创建查询 删除_MYSQL数据库查询删除创建企业基本知识
  8. 阿里如何面试MySQL优化CPU消耗
  9. IT永远也不可能做到整体外包,这句话是我说的。。。
  10. Navsoso引领HUD抬头导航潮流
  11. 洛谷1004方格取数
  12. word文件转pdf转换器11.0注册码
  13. python爬虫-scrapy基于selenium进行网页截图
  14. Java日志体系(三) jul 配置文件详解,日志示例
  15. 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
  16. javaScript的字符串
  17. ffmpeg项目编译出错问题解决方案.
  18. laragon超级好用的PHP服务器
  19. 西安交通大学城市学院计算机二级,2019西安交通大学城市学院专业排名
  20. 某某读书搜索__DATA__分析

热门文章

  1. 毕设-基于SSM大学生兼职平台系统
  2. 排队助手 | 2022年6月产品更新日志
  3. [渝粤教育] 四川工程职业技术学院 建筑工程测量 参考 资料
  4. 《高标准农田建设项目耕地质量等级评价》
  5. 在线教育遭遇瓶颈,扣丁引领教育O2O时代
  6. python challenge 7-12关 攻略
  7. Surging学习笔记(一)
  8. 1.Matlab基础知识
  9. cbow 与 skip-gram的比较
  10. 2021年中国知识管理十大趋势