芯科公司的EFM32单片机与ST的STM32同为32位ARM架构的单片机。它的特点是能耗管理做的更细更到位。所以在很多对能耗非常在意的场合,比如用电池供电的指纹锁、物联网传感器等领域应用比较广泛。但芯科公司的单片机比较缺乏系统的学习资料,虽然网站上提供了应用实例与说明。但总体上给人不成系统并且零乱的感觉。对想使用芯科单片机的开发人员造成不小的入门困扰。在这里我们通过一个系列,拿出真正可运行的代码实例来帮到相关的开发者。
单片机开发中,非常重要的第一步就是能够调通串口。只要串口一通,就可以让单片机随时告诉我们程序的运行状态。为开发工作带来很大的便利。所以本系列从串口的使用开始。
EFM32单片机的串口相比较于STM32系列,特殊之处在于提供了一个可以在EM2模式下使用的LEUART串口。这个EM2模式是EFM32单片机关闭了绝大部分外设的一种低功耗模式。在这种模式下LEUART串口的时钟源可以被调整到32.768k时钟晶振上。在超低功耗模式EM2下,这个串口可以唤醒MCU,也可以直接与DMA配合自动完成数据收发而不打扰MCU的睡眠。以保持更低的功耗。
下面就是USART串口的精要版实现代码:
void setupUsart(void)
{
/* Enable peripheral clocks */
CMU_ClockEnable(cmuClock_HFPER, true);
CMU_ClockEnable(cmuClock_GPIO, true);
/* To avoid false start, configure TX pin as initial high */
GPIO_PinModeSet(gpioPortD,0, gpioModePushPull, 1);
GPIO_PinModeSet(gpioPortD,1