【极海APM32F4xx Tiny】学习笔记01-模板工程创建

news2024/10/5 19:20:00

本项目的使用的开发板

在这里插入图片描述

关于芯片使用的其他笔记

在这里插入图片描述

外部晶振时钟

在这里插入图片描述

模板工程创建/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 扩展包

在这里插入图片描述

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-knWasbT0-1685110895429)(picture/image-20230526215812774.png)]

创建分组

std_lib

user

bsp

cmsis

在这里插入图片描述

4.2为每个分组添加文件

在这里插入图片描述

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

5.1添加头文件路径

在这里插入图片描述

5.2配置工程

使用AC5编译器

勾选 Use Micro LIB

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

5.4选择下载器

在这里插入图片描述

6.LED bsp代码添加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uwhgXxOl-1685110895433)(picture/image-20230526220645549.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.编译运行代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRi4XzIL-1685110895433)(picture/image-20230526220837722.png)]
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis trim标签使用详解

mybatis trim标签使用详解 mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。…

Dubbo框架

文章目录 1. 什么是Dubbo2. Dubbo架构3. SpringBoot整合Dubbo框架3.1 前期准备3.1.1 Zookeeper的安装 3.2 项目创建3.3 添加依赖3.4 定义服务接口3.5 服务端的实现3.6 消费端请求任务3.7 服务端配置文件3.8 消费端配置文件3.9 启动应用 4. Dubbo负载均衡5. Dubbo集群容错 1. 什…

第一部分-基础篇-第一章:PSTN与VOIP(上篇)

文章目录 序言引言:什么是VOIP和PSTN1.1 PSTN起源与发展1.1.1 最早的电话网1.1.2 人工电话交换时代1.1.3自动电话交换时代1.1.4半电子交换机时代1.1.5空分交换机时代1.1.6 数字交换机时代1.1.7现代PSTN时代1.1.8 下一代网络及VoIP时代 1.2 电话实现技术1.2.1 电话号…

【MySQL】如何速通MySQL(1)

📌前言:本篇博客介绍如何速通MySQL,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接~ &…

“AI孙燕姿”爆火背后,是内容合规问题的再次升级|上云那些事

“讽刺的是,人类再怎么快也无法超越它。”这是歌手孙燕姿关于自己AI分身遍布网络一事,在MAKE MUSIC网站的博客上发表的看法。 来源:孙燕姿MAKE MUSIC网站博客 当大家还在担心AIGC会不会让自己失业时,歌手孙燕姿就因为“AI孙燕姿”…

LDA算法实现鸢尾花数据集降维

目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍 唐杰,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件&#xff…

深度学习笔记(八)——语义分割标注转换

核心思想:“将颜色转换成对应的标号” 形式一:Json格式的标注转换成调色板mask 形式二:RGB类型mask(24位三通道)转成调色板mask(8位单通道),调色板的格式为.png 形式三:对于二分类的…

oracle安装

服务端安装(公司中不需要,只安装客户端就行) 1、挂载一个Windows系统 双击vmx文件 启动 2、网络配置 添加一个网络 自己电脑看控制面板是否添加虚拟网卡 查看连接的网络,ip地址不能为1,为1就自己修改,…

深度剖析:C++内存池的设计与实现

深度剖析:C内存池的设计与实现 一、引言(Introduction)1.1 内存管理的重要性1.2 内存池的基本概念1.3 内存池的应用场景 二、C内存管理机制(C Memory Management Mechanism)2.1 C内存分配与释放2.2 C内存管理的问题2.3…

《Kali渗透基础》04. 主动信息收集(一)

kali渗透 1:主动信息收集2:发现3:二层发现3.1:arping3.2:nmap3.3:netdiscover3.4:Scapy 4:三层发现4.1:ping4.2:Scapy4.3:nmap4.4:fpi…

Win2016服务器DNS服务搭建

文章目录 前言一、什么是DNS?1.为什么需要DNS系统2.为DNS(Domain Name System,域名系统)的功能3.域名解决方案的演进 二、域名介绍1.域名空间结构2.常见的顶级域名 三、DNS解析原理1.查询过程及方式2.DNS的查询分类 四、配置DNS服…

【论文精读】ICLR2022 - 语言驱动的语义分割

【论文精读】ICLR2022 - 语言驱动的语义分割 【论文原文】:LANGUAGE-DRIVEN SEMANTIC SEGMENTATION 【作者信息】:Boyi Li Cornell University, Cornell Tech Kilian Q. Weinberger Cornell University Serge Belongie University of Copenhagen Vladl…

2023年试用uniapp、vue2、vue3、typescript、vite、nvue

1. 前言 试用了一下 uniapp、vue2、vue3、typescript、vite、nvue 等技术,写了两个页面,两个页面加起来不到400行代码。 尝试使用了四种组合: 组合1:uniapp vue2 JavaScript nvue文件 非fast模式 组合2:uniapp…

【C++系列Pn】模板搞不懂,脑阔抖三抖(精讲模板,快来复习趴)

前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎!本章主要内容面向接触过C的老铁,主要内容含 目录 一.模板 1.函数模板 一.函数模板概念 二.函数模板的格式 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的…

数据库的简介

文章目录 前言一、为什么需要数据库二、数据库基本概念1.什么是数据库2.什么是数据库管理系统3.数据库表4.数据库表 三、常见的数据库管理系统 前言 数据库的简介 一、为什么需要数据库 信息时代数据容量海量增长,结构化存储大量数据,便于高效的检索和…

如何在华为OD机试中获得满分?Java实现【区块链文件转储系统】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

完全详解权限系统设计方案

1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。 在很多时候我们会觉得这么多繁杂的申请给工作带…

【JavaSE】Java基础语法(十五):继承

文章目录 1. 继承的实现2. 继承的好处和弊端3. Java中继承的特点4. 继承中的成员访问特点5. super6. 继承中构造方法的访问特点7. 继承中成员方法的访问特点8. super内存图9. 方法重写10. 权限修饰符 1. 继承的实现 继承的概念 继承是面向对象三大特征之一,可以使得…

G0第23章 :gorm介绍、模型定义、连接数据库

01 GORM介绍 https://gorm.io/zh_CN/docs/ gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。 特性 全功能 ORM关联 (Has One,Has Many,Belongs To,Many To Many,多态&…

SentinelResource配置

1.SentinelResource配置(上) 1.1.按资源名称限流 后续处理 1.1.1.启动Nacos成功 1.1.2.启动Sentinel成功 1.1.3.添加控制器 import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExc…