【APM32E030R Micro-EVB开发板评测】开箱玩了与LED灯闪烁
拿到小E030开发板已有些日子,由于一些原因暂未开启评测。但这段时间仍在学习极海APM32E030R的相关知识,也在关注各位小伙伴们的开箱帖子与评测帖子。本周末得闲,准备开启我的评测,希望后来者居上吧!
开箱
打开外包装,极海使用了精心设计的纸盒,盒子内部由防静电袋包裹的APM32E030R。专业,看着也特别地舒服!

APM32E030R开发板是黑色的沉金PCB设计,有些神秘,也显得高大上。既然拿到手要进行评测,我也就干脆焊接上排座,以及背面预留的EEPROM器件——AT24C02芯片,当然也包含两个上拉电阻和去耦电容。

开发环境
我平时做项目开发以Keil为主,所以,本次评测仍以Keil MDK平台为编译环境。对于APM32E030来说,与常规的国际大厂略有不同,我们需要手动安装APM32E030.pack的器件库。如果使用Jlink调试,还需要手动安装jflash的FLM文件等。其实,安装完成之后和那些国际大厂的MCU的编译开发就是一回事了。这里,我为了减轻开发难度,降低学习门槛,使用了极海官方的SDK,不仅省去了不少查询datasheet,编写头文件,声明变量等烦琐事情,而且省时,又可靠。岂不美哉,美哉!
对了,上面提到的Keil使用pack文件,在官方的SDK压缩包里面有提供。
初始化APM32E030
为了验证芯片的时钟树配置正确,我们通过MCO输出PLL主频的2分频。我们还初始化板载LED灯,用于验证GPIO输出是否正确。计划有了,我们说干就干。
主频72MHz
极海APM32E030R系列MCU,虽然内核采用Cortex-M0+,但其主频高达72MHz。板载的时钟输入为8MHz,故我们通过PLL倍频9倍,升至72MHz最高主频。为我们后续的评测与DIY提供最强的性能支撑。HSE的原理图如下:

时钟初始化,PLL到72MHz代码如下:
static void SystemClock72M(void)
{
uint32_t i;
RCM->CTRL1_B.HSEEN = BIT_SET;
for (i = 0; i < HSE_STARTUP_TIMEOUT; i++)
{
if (RCM->CTRL1_B.HSERDY**)
{
break;
}
}
if (RCM->CTRL1_B.HSERDY**)
{
/* Enable Prefetch Buffer */
FMC->CTRL1_B.PBEN = BIT_SET;
/* Flash 2 wait state */
FMC_SetLatency_2();
/* HCLK = SYSCLK */
RCM->CFG1_B.AHBPSC = 0X00;
/* PCLK = HCLK */
RCM->CFG1_B.APB1PSC = 0X00;
/* PLL: HSE * 9 */
RCM->CFG1_B.PLLSRCSEL = 2;
RCM->CFG1_B.PLLMULCFG = 7;
/* Enable PLL */
RCM->CTRL1_B.PLLEN = 1;
/* Wait PLL Ready */
while (RCM->CTRL1_B.PLLRDY** == BIT_RESET);
/* Select PLL as system clock source */
RCM->CFG1_B.SCLKSEL = 2;
/* Wait till PLL is used as system clock source */
while (RCM->CFG1_B.SCLKSWSTS != 0x02);
}
}
初始化完成HSE时钟及系统主频之后,再配置MCO输出。代码如下:
/**
* @brief: config PA8 for MCO output pin
*
* @param:
* @return:
* @note:
*/
void bsp_mco_output(void)
{
GPIO_Config_T gpioConfig;
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_8, GPIO_AF_PIN0);
gpioConfig.pin = GPIO_PIN_8;
gpioConfig.mode = GPIO_MODE_AF;
gpioConfig.outtype = GPIO_OUT_TYPE_PP;
gpioConfig.speed = GPIO_SPEED_50MHz;
gpioConfig.pupd = GPIO_PUPD_NO;
GPIO_Config(GPIOA, &gpioConfig);
RCM_ConfigCOC(RCM_COC_PLLCLK_DIV_2);
}
PA8引脚与示波器的连接图:

LED灯
LED灯在项目里面主要用于工作状态指示,绿色代表工作正常,快闪一般代表工作异常。接下来,我们看看APM32E030R开发板上板载LED是连接到哪个GPIO引脚的:
我们将PB6和PB7两个GPIO初始化为输出方向,开漏模式,驱动能力为弱。这样,电路上形成灌电流的方式来开启LED灯。两个LED灯我们设计成一个快闪(5Hz)和一个慢闪(1Hz),GPIO初始化代码与控制代码如下:
void bsp_init(void)
{
GPIO_Config_T gpioConfig;
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOB);
gpioConfig.pin = GPIO_PIN_6;
gpioConfig.mode = GPIO_MODE_OUT;
gpioConfig.outtype = GPIO_OUT_TYPE_OD;
gpioConfig.speed = GPIO_SPEED_2MHz;
gpioConfig.pupd = GPIO_PUPD_NO;
GPIO_Config(GPIOB, &gpioConfig);
gpioConfig.pin = GPIO_PIN_7;
GPIO_Config(GPIOB, &gpioConfig);
}
while (1)
{
if (led0_timecnt == 0)
{
led0_timecnt = 200;
led_toggle(GPIO_PIN_6);
}
if (led1_timecnt == 0)
{
led1_timecnt = 500;
led_toggle(GPIO_PIN_7);
}
}

代码码完了!按”F7"开始编译,下载,运行,看看效果怎么样!


从示波器可以清楚看到MCO引脚输出36MHz的方波,符合我们主频72MHz的预期。也能通过LED的闪烁看到我们的开发环境搭建是正常的。
本期开箱帖子就到这里了。亲爱的网友们,欢迎关注我,我们下期见!
