本项目的使用的开发板
关于芯片使用的其他笔记
外部晶振时钟
模板工程创建/LED工程
项目仓库
https://gitcode.net/u010261063/apm32_test_part
创建模板工程的核心要素
- 复制官方的标准外设库
- 复制启动文件
- 复制cmsis文件
- 复制相关的公共头文件如apm32f4xx_int.h 和 system_apm32f4xx.c
- 复制中断处理文件和main文件apm32f4xx_int.c 和main.c
- 后边在创建工程,分组,各个分组添加文件
- 配置工程,编译器,优化等级,预定义宏,下载器选择
- 编写LED驱动文件
- 编译下载测试
模板工程创建流程
0.安装apm 的mdk 的扩展包
1.创建模板工程文件夹
2.复制官方的库文件或其他必须文件
3.创建mdk工程
4.创建分组并添加文件到mdk工程
5.添加头文件
6.LED bsp代码添加
7.编译运行代码
0.安装apm 的mdk 的扩展包
双击安装 Geehy.APM32F4xx_DFP.1.0.3.pack 扩展包
1.创建模板工程文件夹
2.复制官方的库文件或其他必须文件
2.1bsp/src文件夹下的文件
bsp_led.c 是我自己创建的文件
2.2bsp/inc文件夹下的文件
bsp_led.c 是我自己创建的文件
2.2.1以上文件来自
2.3 cmsis文件夹下的文件
2.4 start文件夹下的文件
2.4.1启动文件来自
2.5 std_lib/inc文件夹下的文件
2.5 std_lib/src文件夹下的文件
2.6 std_lib/src文件夹下的文件
2.6.1apm32f4xx.h文件来源
2.6.2std_lib 下的src 和inc文件来源
3.创建mdk工程
3.1
4.创建分组并添加文件到mdk工程
4.1创建分组01
创建分组
std_lib
user
bsp
cmsis
4.2为每个分组添加文件
5.添加头文件-配置工程
5.1添加头文件路径
5.2配置工程
使用AC5编译器
勾选 Use Micro LIB
5.3添加预定义宏和头文件路径
5.4选择下载器
6.LED bsp代码添加
6.1 bsp_led.h
#ifndef __BSP_LED_H
#define __BSP_LED_H
#include "apm32f4xx.h"
#include "apm32f4xx_gpio.h"
#include "apm32f4xx_rcm.h"
typedef enum
{
LED0 = 0,
LED1 = 1,
LED_NUM
} led_id_t;
#define LED2_PIN GPIO_PIN_6
#define LED2_GPIO_PORT GPIOE
#define LED2_GPIO_CLK RCM_AHB1_PERIPH_GPIOE
#define LED3_PIN GPIO_PIN_5
#define LED3_GPIO_PORT GPIOE
#define LED3_GPIO_CLK RCM_AHB1_PERIPH_GPIOE
/*
led gpio初始化
*/
void led_init(led_id_t Led);
/*
led 反转
*/
void led_toggle(led_id_t led);
/*
led 电平设置
*/
void led_set_level(led_id_t led,uint8_t level);
#endif
6.2 bsp_led.c
#include "bsp_led.h"
GPIO_T* GPIO_PORT[LED_NUM] = {LED2_GPIO_PORT, LED3_GPIO_PORT};
const uint16_t GPIO_PIN[LED_NUM] = {LED2_PIN, LED3_PIN};
const uint32_t GPIO_CLK[LED_NUM] = {LED2_GPIO_CLK, LED3_GPIO_CLK};
/*
led gpio初始化
*/
void led_init(led_id_t Led)
{
GPIO_Config_T configStruct;
/** 使能时钟 */
RCM_EnableAHB1PeriphClock(GPIO_CLK[Led]);
/** Configure the GPIO_LED pin */
GPIO_ConfigStructInit(&configStruct);
configStruct.pin = GPIO_PIN[Led];//哪一个引脚
configStruct.mode = GPIO_MODE_OUT;//输出
configStruct.speed = GPIO_SPEED_50MHz;//速度
GPIO_Config(GPIO_PORT[Led], &configStruct);
}
/*
led 反转
*/
void led_toggle(led_id_t led)
{
GPIO_ToggleBit(GPIO_PORT[led],GPIO_PIN[led]);
}
/*
led 电平设置
*/
void led_set_level(led_id_t led,uint8_t level)
{
GPIO_WriteBitValue(GPIO_PORT[led],GPIO_PIN[led],level);
}
7.编译运行代码