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

[复制链接]
 楼主| lulugl 发表于 2023-3-10 22:33 | 显示全部楼层 |阅读模式
#申请原创#  前面写了两篇帖子,在下载固件时遇到了一些问题,静下心来,认真学习了一下APM32F10x_SDK1.8这个软件包。
1、例程默认是APM32F103ZE这块芯片的,所以需要需要切换到自己的芯片,要不下载等都会遇不同的问题,而且还跑不起来。
默认芯片.png
2、默认Define那里也需要修改为107,虽然不修改也可以跑。
芯片define.png
修改好后板级的配置才会对得上号:
BoardMINI.png
3、debug调试端口选择中要选择sw,要不芯片型号选择对不上,下载会出错。
调试port选择.png
4、基于开发板的一些宏定义,在\APM32F10x_SDK_V1.8\Boards\Board_APM32F107_MINI\inc文件夹下的Board_APM32F107_MINI.h中定义了板子的LED、KEY、UART等宏定义,而且在main.h中把他包含进来了,如果是用examples下的demo进行改写,这些就不需要自己定了,非常方便,便是如何路径修改了,一定要记修改头文件的包含与.c文件的重新引用,对于新手,会报错,难查找原因。下面的宏定义代码:
  1. typedef enum //LED灯的枚举
  2. {
  3.     LED2 = 0,
  4.     LED3 = 1
  5. } Led_TypeDef;

  6. typedef enum  //按键的枚举
  7. {
  8.     BUTTON_KEY1 = 0,
  9.     BUTTON_KEY2 = 1
  10. } Button_TypeDef;

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

  16. typedef enum //串口端口枚举
  17. {
  18.     COM1 = 0,
  19.     COM2 = 1
  20. } COM_TypeDef;

  21. /**@} end of group APM32F103_MINI_Enumerations */

  22. /**
  23.   * @}
  24.   */

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

  29. #define LED2_PIN                         GPIO_PIN_6
  30. #define LED2_GPIO_PORT                   GPIOE
  31. #define LED2_GPIO_CLK                    RCM_APB2_PERIPH_GPIOE

  32. #define LED3_PIN                         GPIO_PIN_5
  33. #define LED3_GPIO_PORT                   GPIOE
  34. #define LED3_GPIO_CLK                    RCM_APB2_PERIPH_GPIOE

  35. /**@} end of group APM32F103_MINI_LED */

  36. /** @addtogroup APM32F103_MINI_BUTTON
  37.   * @{
  38.   */
  39. #define BUTTONn                          2

  40. /**
  41. * [url=home.php?mod=space&uid=247401]@brief[/url] Key1 push-button KEY1 对应为PA1
  42. */
  43. #define KEY1_BUTTON_PIN                   GPIO_PIN_1
  44. #define KEY1_BUTTON_GPIO_PORT             GPIOA
  45. #define KEY1_BUTTON_GPIO_CLK              RCM_APB2_PERIPH_GPIOA
  46. #define KEY1_BUTTON_EINT_LINE             EINT_LINE_1
  47. #define KEY1_BUTTON_EINT_PORT_SOURCE      GPIO_PORT_SOURCE_A
  48. #define KEY1_BUTTON_EINT_PIN_SOURCE       GPIO_PIN_SOURCE_1
  49. #define KEY1_BUTTON_EINT_IRQn             EINT1_IRQn
  50. /**
  51. * @brief Key2 push-button KEY1 对应为PA0
  52. */
  53. #define KEY2_BUTTON_PIN                   GPIO_PIN_0
  54. #define KEY2_BUTTON_GPIO_PORT             GPIOA
  55. #define KEY2_BUTTON_GPIO_CLK              RCM_APB2_PERIPH_GPIOA
  56. #define KEY2_BUTTON_EINT_LINE             EINT_LINE_0
  57. #define KEY2_BUTTON_EINT_PORT_SOURCE      GPIO_PORT_SOURCE_A
  58. #define KEY2_BUTTON_EINT_PIN_SOURCE       GPIO_PIN_SOURCE_0
  59. #define KEY2_BUTTON_EINT_IRQn             EINT0_IRQn

  60. /**@} end of group APM32F103_MINI_BUTTON */

  61. /** @addtogroup APM32F103_MINI_COM
  62.   * @{
  63.   */

  64. #define COMn                            2

  65. /**
  66. * @brief Definition for COM port1, connected to USART1  COM1 为usart1 TX为PA9 RX为PA10
  67. */
  68. #define MINI_COM1                        USART1
  69. #define MINI_COM1_CLK                    RCM_APB2_PERIPH_USART1
  70. #define MINI_COM1_TX_PIN                 GPIO_PIN_9
  71. #define MINI_COM1_TX_GPIO_PORT           GPIOA
  72. #define MINI_COM1_TX_GPIO_CLK            RCM_APB2_PERIPH_GPIOA
  73. #define MINI_COM1_RX_PIN                 GPIO_PIN_10
  74. #define MINI_COM1_RX_GPIO_PORT           GPIOA
  75. #define MINI_COM1_RX_GPIO_CLK            RCM_APB2_PERIPH_GPIOA
  76. #define MINI_COM1_IRQn                   USART1_IRQn

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


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

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

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

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

  9. #else
  10. #error "Please select first the APM32 board to be used (in board.c)"
  11. #endif
7、文件apm32f10x_int.c,这是初始中断函数的文件,创建了如下这些函数,如果有中断的使用,记得在这个文件里面修改中断,在移植freeRTos时,记得要在这里屏蔽一些函数:
  1. void NMI_Handler(void);
  2. void HardFault_Handler(void);
  3. void MemManage_Handler(void);
  4. void BusFault_Handler(void);
  5. void UsageFault_Handler(void);
  6. void SVC_Handler(void);
  7. void DebugMon_Handler(void);
  8. void PendSV_Handler(void);
  9. void SysTick_Handler(void);
8、板级外设驱动函数放在\APM32F10x_SDK_V1.8\Libraries\APM32F10x_StdPeriphDriver目录的src\inc目录下面,如果自建模版记得在这下面录找。
外设驱动库.png
9、在目录APM32F10x_SDK_V1.8下面放有readme.md、Readme.pdf两种格式的帮助文件。还有APM32F10x_SDK_um.chm这个SDK的详细说明文件,这些都是在以后开发中需要查询的重要文档。
帮助文档.png
10、在APM32F10x_SDK_V1.8\Examples\Template\Template\Project目录下面给出了Eclipse、IAR、MDK的空白模板大家需要的可以利用这个来新建工程。
Template目录.png
11、在目录APM32F10x_SDK_V1.8\Examples下面,给出了所有外设的示例工程,大家可以用这个示例快速的开发。
所有帮助文档.png
【总结】今天拿到了这款极海的AMP32F107开发板,从官方提供的资料我进行了初步的学习、了解,感觉极海用了心思来做产品,提供的SDK可以说非常完善。如果有stm32开发经验的人,极易上手。同时也感谢21ic提供这么好的机会,让我认识了极海。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

830

帖子

12

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

180

主题

830

帖子

12

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