嵌入式单片机开发 - Keil MDK 编译与烧录程序

news2025/7/19 3:30:32

Keil MDK 编译程序

1、Keil MDK 编译按钮
  1. Build 按钮:重新编译整个工程的所有源文件,无论它们是否被修改过
  1. Rebuild 按钮:仅编译修改过的文件及其依赖项,未修改的文件直接使用之前的编译结果
2、Keil MDK 编译结果
linking...
Program Size: Code=1340 RO-data=336 RW-data=12 ZI-data=1324  
FromELF: creating hex file...
"..\..\Output\atk_f103.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:01
  • 这是 Keil MDK 编译成功后的输出信息,表明程序已经顺利通过编译并生成了目标文件
linking...
  • 编译完成后进入链接(Linking)阶段,将所有的 .o 目标文件、库文件合并成最终的可执行文件,例如,.axf.hex
Program Size: Code=1340 RO-data=336 RW-data=12 ZI-data=1324  
  • 程序在内存中的占用情况,分为 4 个部分
  1. Code=1340:代码段(1340 字节),存放程序代码,例如,函数、指令

  2. RO-data=336:只读数据段(336 字节),存放常量,例如,const 变量、字符串常量

  3. RW-data=12:读写数据段(12 字节),存放已初始化的全局 / 静态变量,需在运行时从 Flash 加载到 RAM

  4. ZI-data=1324:零初始化数据段(1324 字节),存放未初始化的全局 / 静态变量,运行时由启动代码初始化为 0

  • 关键公式如下
  1. Flash 占用 = Code + RO-data + RW-data

  2. RAM 占用 = RW-data + ZI-data

FromELF: creating hex file...
  • 将生成的 .axf 文件(ELF 格式)转换为烧录文件(例如,.hex.bin),用于下载到单片机 Flash 中
"..\..\Output\atk_f103.axf" - 0 Error(s), 0 Warning(s).
  • 编译结果如下
  1. ..\..\Output\atk_f103.axf:输出文件路径

  2. 0 Error(s):错误统计,0 表示编译完全通过,无致命问题

  3. 0 Warning(s):警告统计,0 表示代码规范良好

Build Time Elapsed: 00:00:01
  • 本次编译耗时,耗时短说明工程较小或仅触发了部分编译

Keil MDK 烧录程序

  1. 这里使用 ST-LINK 调试编程工具来烧录程序

  2. ST-LINK 主要用于 STM32 系列 ARM Cortex-M 微控制器的开发

  3. ST-LINK 支持烧录程序、在线调试、擦除等功能

1、基础配置
  1. 点击 【Options for Target】
  1. 点击 【Debug】 -> 选择 【ST-Link Debugger】 -> 勾选 【Load Application at Startup】 -> 勾选 【Run to main()】
  1. 点击 【Utilities】 -> 勾选 【Use Debug Driver】
  1. 点击 【Setting】
  1. 选择 【ST-LINK/V2】 -> 选择 【SW】 -> 在 【SW Device】 中查看设备识别结果
2、下载算法配置
  1. 点击 【Options for Target】
  1. 点击 【Utilities】 -> 点击 【Setting】
  1. 勾选并选择下载算法(算法需要根据实际设备选择)
3、烧录程序
  1. 点击 【Download】
  1. 出现烧录结果
Load "..\\..\\Output\\atk_f103.axf" 
Erase Done.
Programming Done.
Verify OK.
Application running ...
Flash Load finished at 12:41:49
4、烧录结果解读
Load "..\\..\\Output\\atk_f103.axf"
  1. 加载 Keil MDK 生成的 可执行文件
Erase Done.
  1. 设备的 Flash 存储区已被擦除,确保旧程序不会残留影响新程序
Programming Done.
  1. 程序已成功写入设备的 Flash 存储器
Verify OK.
  1. 验证 Flash 中的数据与 .axf 文件一致,无校验错误
Application running ...
  1. 程序已自动运行
Flash Load finished at 12:41:49
  1. 烧录过程完成的时间戳,整个流程无报错

补充学习

1、下载算法
  1. 下载算法是用于将程序烧录到设备 Flash 存储器中的关键组件

  2. 下载算法定义了如何擦除、编程、校验 Flash 的内容

  3. 下载算法是一个小型程序,通常由设备厂商或 IDE 提供

2、调试编程工具与下载算法
  • ST-LINK 等调试编程工具在烧录程序时,依赖下载算法来完成对设备 Flash 的擦除、编程、校验操作
  1. ST-LINK 等调试编程工具是搬运工,负责与设备通信并加载算法

  2. 下载算法是操作手册,告诉设备如何进行操作

  • 要根据不同的设备,选择不同调试编程工具和下载算法

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

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

相关文章

裂项法、分式分解法——复杂分式的拆解

目录 一、裂项法 1. 核心思想 2. 适用场景 3. 步骤 4. 例题 二、分式分解 1. 核心思想 2. 适用场景 3. 步骤 4.例题 一、裂项法 1. 核心思想 将一项拆解为多项之差,使得在求和时中间项相互抵消,最终仅剩首尾少数项。 2. 适用场景 级数求和…

黑马点评秒杀优化

异步优化秒杀业务 回顾之前的内容黑马点评 秒杀优惠券集群下一人一单超卖问题-CSDN博客,为了处理并发情况下的线程安全和数据一致性的问题,我们已经完成了查询优惠券信息、判断秒杀是否开始和结束、检查库存、用户ID加锁、创建订单和扣减库存。 尽管之前…

JavaScript 的演变:2023-2025 年的新特性解析

随着Web技术的飞速发展,ECMAScript(简称ES)作为JavaScript的语言标准,也在不断进化。 本文将带你学习 ECMAScript 2023-2025 的新特性。 一、ECMAScript 2023 新特性 1.1 数组的扩展 Array.prototype.findLast()/Array.protot…

[Java · 初窥门径] Java 注释符

🌟 想系统化学习 Java 编程?看看这个:[编程基础] Java 学习手册 0x01:Java 注释符简介 在编写程序时,为了使代码易于理解,通常会为代码加一些注释。Java 注释就是用通俗易懂的语言对代码进行描述或解释&a…

Docker环境下SpringBoot程序内存溢出(OOM)问题深度解析与实战调优

文章目录 一、问题背景与现象还原**1. 业务背景****2. 故障特征****3. 核心痛点****4. 解决目标** 二、核心矛盾点分析**1. JVM 与容器内存协同失效****2. 非堆内存泄漏****3. 容器内存分配策略缺陷** 三、系统性解决方案**1. Docker 容器配置**2. JVM参数优化(容器…

【计算机网络】网络基础(协议,网络传输流程、Mac/IP地址 、端口号)

目录 1.协议简述2.网络分层结构2.1 软件分层2.2 网络分层为什么? 是什么?OSI七层模型TCP/IP五层(或四层)结构 3. 网络与操作系统之间的关系4.从语言角度理解协议5.网络如何传输局域网通信(同一网段) 不同网…

pgsql中使用jsonb的mybatis-plus和jps的配置

在pgsql中使用jsonb类型的数据时,实体对象要对其进行一些相关的配置,而mybatis和jpa中使用各不相同。 在项目中经常会结合 MyBatis-Plus 和 JPA 进行开发,MyBatis_plus对于操作数据更灵活,jpa可以自动建表,两者各取其…

使用MetaGPT 创建智能体(2)多智能体

先给上个文章使用MetaGPT 创建智能体(1)入门打个补丁: 补丁1: MeteGTP中Role和Action的关联和区别?这是这两天再使用MetaGPT时候心中的疑问,这里做个记录 Role(角色)和 Action&…

C# 使用.NET内置的 IObservable<T> 和 IObserver<T>-观察者模式

核心概念 IObservable<T> 表示 可观察的数据源&#xff08;如事件流、实时数据&#xff09;。 关键方法&#xff1a;Subscribe(IObserver<T> observer)&#xff0c;用于注册观察者。 IObserver<T> 表示 数据的接收者&#xff0c;响应数据变化。 三个核心…

Redis——网络模型之IO讲解

目录 前言 1.用户空间和内核空间 1.2用户空间和内核空间的切换 1.3切换过程 2.阻塞IO 3.非阻塞IO 4.IO多路复用 4.1.IO多路复用过程 4.2.IO多路复用监听方式 4.3.IO多路复用-select 4.4.IO多路复用-poll 4.5.IO多路复用-epoll 4.6.select poll epoll总结 4.7.IO多…

vue3 传参 传入变量名

背景&#xff1a; 需求是&#xff1a;在vue框架中&#xff0c;接口传参我们需要穿“变量名”&#xff0c;而不是字符串 通俗点说法是&#xff1a;在网络接口请求的时候&#xff0c;要传属性名 效果展示&#xff1a; vue2核心代码&#xff1a; this[_keyParam] vue3核心代码&…

旅游特种兵迪士尼大作战:DeepSeek高精准路径优化

DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 随着假期的脚步日渐临近&#xff0c;环球影城等备受瞩目的主题游乐场&#xff0c;已然成为大人与孩子们心中不可或缺的节日狂欢圣地。然而&#xff0c;随之而来的庞大客流&#xff0c;却总让无数游客在欢乐的…

【MySQL】第一弹——MySQL数据库结构与操作

目录 一. 数据库介绍1.1 什么是数据库1.2 为什么要使用数据库1.3 主流数据库1.3.1 关系型数据库1.3.2 非关系型数据库 二. MySQL 的结构2.1 MySQL服务器和客户端2.2 MySQL服务器是如何组织数据的 三. 数据库的操作3.1 创建数据库语法格式示例 3.2 查看数据库语法格式示例 3.3 使…

Spring_MVC 快速入门指南

Spring_MVC 快速入门指南 一、Spring_MVC 简介 1. 什么是 Spring_MVC&#xff1f; Spring_MVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应用程序。它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将应用程序分为模型&#xff08;M…

L38.【LeetCode题解】四数之和(双指针思想) 从汇编角度分析报错原因

目录 1.题目 2.分析 去重的代码 错误代码 3.完整代码 提交结果 1.题目 四数之和 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元…

字符串系列一>最长回文子串

目录 题目&#xff1a;解析&#xff1a;代码&#xff1a; 题目&#xff1a; 链接: link 解析&#xff1a; 代码&#xff1a; class Solution {public String longestPalindrome(String s) {char[] ss s.toCharArray();int n ss.length;int begin 0;//返回结果的起始字符串…

双击热备方案及不同方案的需求、方案对比

双击热备方案概述 一般实现双机热备的方案有三种,分别是共享存储双机热备方案、镜像双机热备方案、双机双柜双机热备方案,这三种方案对硬件要求不同,大家可以根据自身的业务应用特性来选择具体的双机热备方案以及对应的ServHA双机热备软件产品。 1、镜像双机热备 1.1镜像…

VSCODE插值表达式失效问题

GET https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.js net::ERR_CONNECTION_-CSDN博客 更换正确的vue域名 GET https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.js net::ERR_CONNECTION_ <script src"https://unpkg.com/vue2.6.14/dist/vue.js"></sc…

【失败】Gnome将默认终端设置为 Kitty

起因 一会儿gnome-terminal一会儿kitty终端&#xff0c;实在是受不了&#xff0c;决定取缔默认的gnome-terminal。 过程 在 Ubuntu 或 Debian 系统上&#xff1a; 确保 Kitty 已经安装。如果未安装&#xff0c;可以在终端中运行命令sudo apt install kitty -y进行安装。 使用系…

蓝桥杯:连连看

本题大意要我们在一个给定的nxm的矩形数组中找出符合条件的格子 条件如下&#xff1a; 1.数值相同 2.两个横坐标和纵坐标的差值相等&#xff08;由此可得是一个对角线上的格子&#xff09; 那么根据以上条件我们可以用HashMap来解决这个问题&#xff0c;统计对角线上数值相同…