开发板早已拿到,但是由于工作太忙,现在才写测评。APM32单片机早有耳闻,但是一直没有进行测试,这次21IC网站开展测试互动,本人有幸入选,能够对该单片机进行测试。 1、单片机档次理解 在APM32的产品线中,APM32F411系列的单片机应该是一个中高档次,该型号上方有APM32F465、APM32F407,下方有APM32F3XX和APM32F0XX。如果该系列单片机的定价合理,在国产MCU中应该会占有比较大的份额。 2、硬件的搭建 该开发板的做工比较扎实,讲单片机的引脚全部引出,还板载了仿真器,有一点值得夸奖,该开发板安装的USB口是TYPE-C,好找数据线。使用的时候,直接将USB口连接至计算机,就可以下载程序和在线调试。 3、软件环境的搭建 本人使用过多种单片机,各单片机厂商都有一个共同的问题,就是开发板中的库文件单独放在一个文件夹中,与程序的projet文件夹不在一起,当改变程序的位置时,需要重新配置,为今后的程序开发带来一定的麻烦。为了改变此情况,本人对编程环境重新进行了搭建。 (1)建立文件夹。建立项目文件夹,在项目文件夹中建立如下子文件夹。 其中APP文件夹用来放应用程序,BSP用来存在电路板的驱动,Libraries用来存放该单片机的固件,MDK用来存放Keil相关文件,USER用来存在用户程序。各文件夹存放内容如下所示。 (2)Keil的设置 然后在Keil的projet里面建立如下目录。 同时在keil中设置头文件的目录,设置内容如下所示。
(3)程序设计 该开发板单独建立了一个开发板的驱动c文件,里面用了大量的宏定义,但是如果需要自己对程序进行开发,设计的电路板IO口与开发板未必能够对应,因此本人对上述程序均进行了修改。 LED驱动程序如下:
/* Includes */
#include "main.h"
void Led_Init(void)
{
GPIO_Config_T configStruct;
/* Enable the GPIO_LED Clock */
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOE);
/* Configure the GPIO_LED pin */
GPIO_ConfigStructInit(&configStruct);
configStruct.pin = GPIO_PIN_5 | GPIO_PIN_6;
configStruct.mode = GPIO_MODE_OUT;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOE, &configStruct);
GPIOE->BSCL = GPIO_PIN_5;
GPIOE->BSCL = GPIO_PIN_6;
}
void Led2_On(void)
{
GPIOE->BSCH |= GPIO_PIN_6;
}
void Led2_Off(void)
{
GPIOE->BSCL |= GPIO_PIN_6;
}
void Led3_On(void)
{
GPIOE->BSCH |= GPIO_PIN_5;
}
void Led3_Off(void)
{
GPIOE->BSCL |= GPIO_PIN_5;
}
主程序如下: int main(void)
{
Led_Init();
Delay_Init();
while (1)
{
Delay_ms(200);
Led2_On();
Delay_ms(300);
Led3_Off();
Delay_ms(300);
Led2_Off();
Delay_ms(100);
Led3_On();
}
}
4、程序测试 按照上传步骤完成搭建后,将程序下载至开发板,可以看到两个LED按照编程内容愉快的闪烁了。
|