APM32F425从ST库函数移植至APM库函数工程搭建指南

2026-04-23 18:33:23/ By Admin

  APM32F425是珠海极海半导体推出的工业级高性能扩展型MCU,搭载Arm®Cortex‑M4F内核,最高工作主频240MHz,支持FPU与DSP指令。作为APM32F407的pin‑to‑pin兼容升级产品,它在内存资源与运算效率上均有明显优化,非常适合通用伺服等工业控制应用。

  本文以通用伺服软件工程为例,结合APM32F425与STM32F407工程对比,详细说明如何基于APM32官方SDK库函数,完成从ST库到APM库的移植与工程搭建。

  一、获取APM32F425最新版SDK库

  移植前需先获取官方适配的SDK库文件。

  库名称:APM32F4xx_DAL_SDK

  版本:v1.3.0

  获取方式:联系极海代理商——联科芯微电子销售shirly 18923868327领取

  支持型号:APM32F411、F465、F405/407、F417、F402、F425/427等系列

  二、新建APM32F425工程

  在开发环境中安装APM32F4系列对应的pack包

  新建工程时,芯片型号选择APM32F425

1.jpg

  三、导入SDK核心文件

  从SDK目录中导入工程必需文件,按功能分为三类:

  启动与系统文件

  system_apm32f4xx.c

  system_apm32f4xx.h

  startup_apm32f427xx.s

  芯片底层头文件

  芯片定义文件:apm32f4xx.h、apm32f425xx.h

  内核文件:core_cm4.h

  编译器适配文件:cmsis_armcc.h等

  外设驱动文件

  如apm32f4xx_adc.c/h、apm32f4xx_tmr.c/h等

  建议将全部外设驱动整理为公共平台文件夹,便于后续项目一键导入

  四、工程文件与路径配置

  将所需底层驱动文件添加到工程目录

2.jpg

  在开发环境的Options for Target中,配置头文件包含路径

  确保编译器能正确索引所有驱动与系统文件

  五、外设底层配置(移植核心)

  外设配置是移植关键,需按APM库函数规范完成时钟、GPIO、外设功能配置。部分无对应库函数的功能,可直接操作寄存器实现。

  以下以TIM2正交解码配置为例,展示APM库函数用法:

void MX_TIM2_Init(void)    //ea/eb
{  
    TMR_BaseConfig_T TMR_TimeBaseStruct;
    GPIO_Config_T gpioConfig = {0};

    /* 开启外设时钟 */
    RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR2);
    RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);

    /**TIM2 GPIO配置
    PA0-WKUP  ------> TIM2_CH1
    PA1      ------> TIM2_CH2
    */
    gpioConfig.pin = PUL_Pin|DIR_Pin;
    gpioConfig.mode = GPIO_MODE_AF;
    gpioConfig.speed = GPIO_SPEED_100MHz;
    gpioConfig.otype = GPIO_OTYPE_PP;
    gpioConfig.pupd = GPIO_PUPD_NOPULL;
    GPIO_Config(GPIOA, &gpioConfig);

    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_0, GPIO_AF_TMR2);
    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_1, GPIO_AF_TMR2);

    GPIO_ResetBit(GPIOA, GPIO_PIN_0);
    GPIO_ResetBit(GPIOA, GPIO_PIN_1);

    /* 定时器触发与主从模式 */
    TMR_SelectOutputTrigger(TMR2, TMR_TRGO_SOURCE_ENABLE);
    TMR_EnableMasterSlaveMode(TMR2);

    /* 定时器基础配置 */
    TMR_TimeBaseStruct.division = 1;
    TMR_TimeBaseStruct.countMode = TMR_COUNTER_MODE_UP;
    TMR_TimeBaseStruct.period = 0xffffffff;
    TMR_TimeBaseStruct.clockDivision = TMR_CLOCK_DIV_1;
    TMR_ConfigTimeBase(TMR2, &TMR_TimeBaseStruct);
    TMR_DisableCCPreload(TMR2);

    /* 编码器接口配置 */
    TMR_ConfigEncodeInterface(TMR2, TMR_ENCODER_MODE_TI2,
                              TMR_IC_POLARITY_RISING,
                              TMR_IC_POLARITY_FALLING);

    /* 分频与滤波配置(寄存器操作) */
    MODIFY_REG(TMR2->CCM1, TIM_CCMR1_IC1PSC, TIM_CCMR1_IC1PSC_0);  //div2
    MODIFY_REG(TMR2->CCM1, TIM_CCMR1_IC2PSC, TIM_CCMR1_IC2PSC_0);  //div2

    MODIFY_REG(TMR2->CCM1, TIM_CCMR1_IC1F, TIM_CCMR1_IC1F_1|TIM_CCMR1_IC1F_3);  //Filter
    MODIFY_REG(TMR2->CCM1, TIM_CCMR1_IC2F, TIM_CCMR1_IC2F_1|TIM_CCMR1_IC2F_3);  //Filter

    MODIFY_REG(TMR2->CCM1, TIM_CCMR1_CC1S, TIM_CCMR1_CC1S_0);
    MODIFY_REG(TMR2->CCM1, TIM_CCMR1_CC2S, TIM_CCMR1_CC2S_0);
}

  六、移植实用建议

  优先参考官方SDK例程学习库函数用法,例程路径:

  SDKF4-SDKAPM32F4xx_SDK_v1.3Examples

  按功能查找对应例程,例如定时器PWM输出可参考:

  ExamplesTMRTMR_PWMOutputProjectMDK

  复杂功能可结合例程与寄存器操作,提升配置灵活性

  建立公共驱动库,实现多项目复用,缩短开发周期

  完成以上步骤,即可顺利将基于STM32F407的ST库工程,移植到APM32F425的APM库工程,充分发挥芯片的高性能与资源优势。

icon_up
close_white