[APM32E0] 【APM32E030R Micro-EVB开发板评测】开箱玩了与LED灯闪烁

[复制链接]
codingtuzi 发表于 2025-8-13 00:34 | 显示全部楼层 |阅读模式

【APM32E030R Micro-EVB开发板评测】开箱玩了与LED灯闪烁

拿到小E030开发板已有些日子,由于一些原因暂未开启评测。但这段时间仍在学习极海APM32E030R的相关知识,也在关注各位小伙伴们的开箱帖子与评测帖子。本周末得闲,准备开启我的评测,希望后来者居上吧!

开箱

打开外包装,极海使用了精心设计的纸盒,盒子内部由防静电袋包裹的APM32E030R。专业,看着也特别地舒服!

外包装纸盒.jpg

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

焊接EEPROM器件.jpg

开发环境

我平时做项目开发以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的原理图如下:

晶振原理图.jpg

时钟初始化,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引脚与示波器的连接图:

连线图.jpg

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);
    }
  }

LED灯原理图.jpg
代码码完了!按”F7"开始编译,下载,运行,看看效果怎么样!

LED灯闪烁.gif

MCO输出频率图.jpg

从示波器可以清楚看到MCO引脚输出36MHz的方波,符合我们主频72MHz的预期。也能通过LED的闪烁看到我们的开发环境搭建是正常的。

本期开箱帖子就到这里了。亲爱的网友们,欢迎关注我,我们下期见!

开发板正面照.jpg

心跳回响 发表于 2025-8-13 09:34 | 显示全部楼层
赞一下!
MCO的输出真是稳定啊
Gfan 发表于 2025-8-13 14:00 | 显示全部楼层
喜闻乐见的开箱点灯~
心跳回响 发表于 2025-8-14 09:43 | 显示全部楼层
居然还自己焊接了芯片。
动手能力超赞
海洋凝视 发表于 2025-8-15 10:18 | 显示全部楼层
   一个快闪,一个慢闪。
典型的工业场景应用
 楼主| codingtuzi 发表于 2025-8-15 10:20 | 显示全部楼层
话说,我的帖子怎么成了这个样子了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

122

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

122

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部