#申请原创# 前面写了两篇帖子,在下载固件时遇到了一些问题,静下心来,认真学习了一下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提供这么好的机会,让我认识了极海。
|