626|3

33

帖子

0

TA的资源

一粒金砂(中级)

 

【极海APM32F4xx Tiny】学习笔记01-模板工程创建 [复制链接]

  本帖最后由 chejia12 于 2023-5-29 22:11 编辑

本项目的使用的开发板

911d2118beef4633a05d56a7da058778.png

关于芯片使用的其他笔记

d41bcb5e9a2e416884736a214adcd7d8.png

外部晶振时钟

925603a556304b868345bfc469b957f2.png

模板工程创建/LED工程

项目仓库 https://gitcode.net/u010261063/apm32_test_part

创建模板工程的核心要素

  1. 复制官方的标准外设库
  2. 复制启动文件
  3. 复制cmsis文件
  4. 复制相关的公共头文件如apm32f4xx_int.h 和 system_apm32f4xx.c
  5. 复制中断处理文件和main文件apm32f4xx_int.c 和main.c
  6. 后边在创建工程,分组,各个分组添加文件
  7. 配置工程,编译器,优化等级,预定义宏,下载器选择
  8. 编写LED驱动文件
  9. 编译下载测试

模板工程创建流程

0.安装apm 的mdk 的扩展包

1.创建模板工程文件夹

2.复制官方的库文件或其他必须文件

3.创建mdk工程

4.创建分组并添加文件到mdk工程

5.添加头文件

6.LED bsp代码添加

7.编译运行代码

0.安装apm 的mdk 的扩展包

双击安装 Geehy.APM32F4xx_DFP.1.0.3.pack 扩展包

aa2e64598d544d639ef73186ba585cfa.png

1.创建模板工程文件夹

4b5edcb0f558415fa8dfebf6c7248f07.png

2.复制官方的库文件或其他必须文件

2.1bsp/src文件夹下的文件

bsp_led.c 是我自己创建的文件

f477b4751e234fd38d4ad60f8ef0567e.png

2.2bsp/inc文件夹下的文件

bsp_led.c 是我自己创建的文件

ac697e4c5a5b45c295ca6084d8202668.png

2.2.1以上文件来自

2adc4124c4464906a87a873cf10d46b5.png

45d334bfa8304b70829e0557f076a607.png

2.3 cmsis文件夹下的文件

511d43391d4c477f8bfc80d87beefeac.png

2.4 start文件夹下的文件

412d0a191e5f445a8c8e5855fc993427.png

2.4.1启动文件来自

9acbff551f9a41acbb6fb8c6c0ae3a27.png

2.5 std_lib/inc文件夹下的文件

f9664961ae324571b35430e673a786ae.png

2.5 std_lib/src文件夹下的文件

95e81e42b31d43eeb9c4fe465cbd545d.png

2.6 std_lib/src文件夹下的文件

a078941802654af78f3a4ceb3b1a1621.png

2.6.1apm32f4xx.h文件来源

a200d8edbc2e48a391a2c69484ac2187.png

2.6.2std_lib 下的src 和inc文件来源

2798b2cce70b4af7a826d787503c3f41.png

3.创建mdk工程

3.1

80dcf37752584a1e8fea7dd642402eb5.png

3729fc80f52c49a7adb051cc4f63f26e.png

56f1b07c3f57440cbcf68f771cfd895c.png

4.创建分组并添加文件到mdk工程

4.1创建分组01

3fa8e3d28a334470bfccd1d450f8bdeb.png

创建分组

std_lib

user

bsp

cmsis

c1ee8e1780314ef9b45791c1a61714d9.png

4.2为每个分组添加文件

028558e53d304c85896c913349eb7b75.png

5.添加头文件-配置工程

5.1添加头文件路径

15f2517cf1554dcf9175b295c24962d7.png

5.2配置工程

使用AC5编译器

勾选 Use Micro LIB

4264c9ca7a0a4db1bb1519244e02ecd8.png

5.3添加预定义宏和头文件路径

4e4412f3ca5d49a581795e2762c03401.png

e42f1f2188ca40edafaff80e9362715b.png

5.4选择下载器

8b0b51cadb13448c9c5e98d24486643d.png

6.LED bsp代码添加

c3f8ef1f8c864a67b8cee387c63cf61d.png

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.编译运行代码

dc1424b91b344c6c9ec4d430daf702fb.png 08e8b23f17504526a874d8b7a0eac42d.png

 

最新回复

非常经典的入门创建示例,辛苦了。楼主有空可以录个视频,给新手们打个样!  详情 回复 发表于 2023-6-1 08:58
 
 
 

回复

5064

帖子

4

TA的资源

版主

 

楼主细致

 
 
 

回复

4638

帖子

0

TA的资源

版主

 

6.1 bsp_led.h

6.2 bsp_led.c

代码那部分好像没有复制成功

 
 
 

回复

5097

帖子

3

TA的资源

版主

 
非常经典的入门创建示例,辛苦了。楼主有空可以录个视频,给新手们打个样!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表