本篇文章,我们来看EFM32单片机的LEUART串口。LEUART串口是EFM32系列单片最特色的功能之一。这个LEUART的时钟源可以在主时钟与实时时钟以及内部的RX时钟三者间选择。如果选择了主时钟,那LEUART就和普通的UART串口没区别,速度不受限制同时也没有低功耗特性。如果选择了外部的32.768k实时时钟。那LEUART就可以在EM2模式下使用。但这时LEUART只能使用9600及以下的波特率。EM2模式下,单片机的绝大部分外设都已关闭,MCU本身也进入了睡眠状态。这时MCU的耗电可以到nA级别。在EM2模式下使用LEUART有两种方式,一种是与DMA配合,不通过MCU的干预自动完成收发动作。MCU通过实时时钟定时器来定期唤醒再来处理收到的内容。第二种方式是LEUART发生接收事件,并同时唤醒MCU,由MCU马上对串口进行操作处理。处理完毕后MCU重新回到睡眠状态。这里我们看第二种方式下的LEUART的初始化代码:
void setupLeuart(void)
{
/* Enable peripheral clocks */
CMU_ClockEnable(cmuClock_HFPER, true);
/* Configure GPIO pins */
CMU_ClockEnable(cmuClock_GPIO, true);
/* Enable CORE LE clock in order to access LE modules */
CMU_ClockEnable(cmuClock_CORELE, true);
/* Select LFXO for LEUARTs (and wait for it to stabilize) */
//CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_CORELEDIV2);
CMU_ClockSele