打印
[活动]

【APM32F107VCT6 MINI开发板测评】用心学习APM32F10x_SDK_V1.8心得

[复制链接]
437|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2023-3-10 22:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创#  前面写了两篇帖子,在下载固件时遇到了一些问题,静下心来,认真学习了一下APM32F10x_SDK1.8这个软件包。
1、例程默认是APM32F103ZE这块芯片的,所以需要需要切换到自己的芯片,要不下载等都会遇不同的问题,而且还跑不起来。

2、默认Define那里也需要修改为107,虽然不修改也可以跑。

修改好后板级的配置才会对得上号:

3、debug调试端口选择中要选择sw,要不芯片型号选择对不上,下载会出错。

4、基于开发板的一些宏定义,在\APM32F10x_SDK_V1.8\Boards\Board_APM32F107_MINI\inc文件夹下的Board_APM32F107_MINI.h中定义了板子的LED、KEY、UART等宏定义,而且在main.h中把他包含进来了,如果是用examples下的demo进行改写,这些就不需要自己定了,非常方便,便是如何路径修改了,一定要记修改头文件的包含与.c文件的重新引用,对于新手,会报错,难查找原因。下面的宏定义代码:
typedef enum //LED灯的枚举
{
    LED2 = 0,
    LED3 = 1
} Led_TypeDef;

typedef enum  //按键的枚举
{
    BUTTON_KEY1 = 0,
    BUTTON_KEY2 = 1
} Button_TypeDef;

typedef enum //按键模式的枚举 0为普通GPIO,1为中断模式
{
    BUTTON_MODE_GPIO = 0,
    BUTTON_MODE_EINT = 1
} ButtonMode_TypeDef;

typedef enum //串口端口枚举
{
    COM1 = 0,
    COM2 = 1
} COM_TypeDef;

/**@} end of group APM32F103_MINI_Enumerations */

/**
  * @}
  */

/** @addtogroup APM32F103_MINI_LED
  * @{ 定义了LED灯的端号、引脚号 对应LED2 为PE6  LED3为PE5
  */
#define LEDn                             2

#define LED2_PIN                         GPIO_PIN_6
#define LED2_GPIO_PORT                   GPIOE
#define LED2_GPIO_CLK                    RCM_APB2_PERIPH_GPIOE

#define LED3_PIN                         GPIO_PIN_5
#define LED3_GPIO_PORT                   GPIOE
#define LED3_GPIO_CLK                    RCM_APB2_PERIPH_GPIOE

/**@} end of group APM32F103_MINI_LED */

/** @addtogroup APM32F103_MINI_BUTTON
  * @{
  */
#define BUTTONn                          2

/**
* [url=home.php?mod=space&uid=247401]@brief[/url] Key1 push-button KEY1 对应为PA1
*/
#define KEY1_BUTTON_PIN                   GPIO_PIN_1
#define KEY1_BUTTON_GPIO_PORT             GPIOA
#define KEY1_BUTTON_GPIO_CLK              RCM_APB2_PERIPH_GPIOA
#define KEY1_BUTTON_EINT_LINE             EINT_LINE_1
#define KEY1_BUTTON_EINT_PORT_SOURCE      GPIO_PORT_SOURCE_A
#define KEY1_BUTTON_EINT_PIN_SOURCE       GPIO_PIN_SOURCE_1
#define KEY1_BUTTON_EINT_IRQn             EINT1_IRQn
/**
* @brief Key2 push-button KEY1 对应为PA0
*/
#define KEY2_BUTTON_PIN                   GPIO_PIN_0
#define KEY2_BUTTON_GPIO_PORT             GPIOA
#define KEY2_BUTTON_GPIO_CLK              RCM_APB2_PERIPH_GPIOA
#define KEY2_BUTTON_EINT_LINE             EINT_LINE_0
#define KEY2_BUTTON_EINT_PORT_SOURCE      GPIO_PORT_SOURCE_A
#define KEY2_BUTTON_EINT_PIN_SOURCE       GPIO_PIN_SOURCE_0
#define KEY2_BUTTON_EINT_IRQn             EINT0_IRQn

/**@} end of group APM32F103_MINI_BUTTON */

/** @addtogroup APM32F103_MINI_COM
  * @{
  */

#define COMn                            2

/**
* @brief Definition for COM port1, connected to USART1  COM1 为usart1 TX为PA9 RX为PA10
*/
#define MINI_COM1                        USART1
#define MINI_COM1_CLK                    RCM_APB2_PERIPH_USART1
#define MINI_COM1_TX_PIN                 GPIO_PIN_9
#define MINI_COM1_TX_GPIO_PORT           GPIOA
#define MINI_COM1_TX_GPIO_CLK            RCM_APB2_PERIPH_GPIOA
#define MINI_COM1_RX_PIN                 GPIO_PIN_10
#define MINI_COM1_RX_GPIO_PORT           GPIOA
#define MINI_COM1_RX_GPIO_CLK            RCM_APB2_PERIPH_GPIOA
#define MINI_COM1_IRQn                   USART1_IRQn

/**
* @brief Definition for COM port2, connected to USART2 COM2 为usart2 TX为PA2 RX为PA3
*/
#define MINI_COM2                        USART2
#define MINI_COM2_CLK                    RCM_APB1_PERIPH_USART2
#define MINI_COM2_TX_PIN                 GPIO_PIN_2
#define MINI_COM2_TX_GPIO_PORT           GPIOA
#define MINI_COM2_TX_GPIO_CLK            RCM_APB2_PERIPH_GPIOA
#define MINI_COM2_RX_PIN                 GPIO_PIN_3
#define MINI_COM2_RX_GPIO_PORT           GPIOA
#define MINI_COM2_RX_GPIO_CLK            RCM_APB2_PERIPH_GPIOA
#define MINI_COM2_IRQn                   USART2_IRQn
5、同时\APM32F10x_SDK_V1.8\Boards\Board_APM32F107_MINI\src文件夹下的Board_APM32F107_MINI.c对板载外设LED、KEY、串口的初始化配置函数:
void APM_MINI_LEDInit(Led_TypeDef Led); //LED初始化


6、在\APM32F10x_SDK_V1.8\Boards目录下有board.c/h根据define的定义来定位包含哪个板载的初化文件,所以如果自己建的工程,记得包含这个文件进去:
/* Includes */
#include "Board.h"

#if defined (APM32F103_MINI)
#include "Board_APM32F103_MINI\src\Board_APM32F103_MINI.c"

#elif defined (APM32F103VCS_MINI)
#include "Board_APM32F103VCS_MINI\src\Board_APM32F103VCS_MINI.c"

#elif defined (APM32F107_MINI)
#include "Board_APM32F107_MINI\src\Board_APM32F107_MINI.c"

#else
#error "Please select first the APM32 board to be used (in board.c)"
#endif
7、文件apm32f10x_int.c,这是初始中断函数的文件,创建了如下这些函数,如果有中断的使用,记得在这个文件里面修改中断,在移植freeRTos时,记得要在这里屏蔽一些函数:
void NMI_Handler(void);
void HardFault_Handler(void);
void MemManage_Handler(void);
void BusFault_Handler(void);
void UsageFault_Handler(void);
void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
8、板级外设驱动函数放在\APM32F10x_SDK_V1.8\Libraries\APM32F10x_StdPeriphDriver目录的src\inc目录下面,如果自建模版记得在这下面录找。

9、在目录APM32F10x_SDK_V1.8下面放有readme.md、Readme.pdf两种格式的帮助文件。还有APM32F10x_SDK_um.chm这个SDK的详细说明文件,这些都是在以后开发中需要查询的重要文档。

10、在APM32F10x_SDK_V1.8\Examples\Template\Template\Project目录下面给出了Eclipse、IAR、MDK的空白模板大家需要的可以利用这个来新建工程。

11、在目录APM32F10x_SDK_V1.8\Examples下面,给出了所有外设的示例工程,大家可以用这个示例快速的开发。

【总结】今天拿到了这款极海的AMP32F107开发板,从官方提供的资料我进行了初步的学习、了解,感觉极海用了心思来做产品,提供的SDK可以说非常完善。如果有stm32开发经验的人,极易上手。同时也感谢21ic提供这么好的机会,让我认识了极海。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

744

帖子

10

粉丝