STM32CubeMX 创建 MDK 工程

STM32CubeMX 创建 MDK 工程


MDK (Keil uVision)

MDK (Keil uVision) 是 Arm 公司开发的一款集成开发环境 (IDE),专门用于 Arm 架构的嵌入式系统开发。它提供了全面的功能,包括:

  • 代码编辑器,支持语法高亮、代码补全和错误检测
  • 调试器,支持单步执行、断点和变量监视
  • 汇编器和链接器,用于生成可执行代码
  • 项目管理工具,用于组织和管理代码项目
  • 与各种仿真器和调试器的集成,方便进行硬件调试

MDK 因其易用性、强大的功能和对 Arm 架构的良好支持而受到嵌入式开发人员的广泛欢迎。它特别适合开发基于 Cortex-M 内核的 STM32 微控制器的应用程序。

STM32CubeMX

STM32CubeMX 是 STMicroelectronics 提供的一款图形化配置和代码生成工具,用于 STM32 微控制器。它允许用户快速、轻松地配置外设、生成初始化代码并创建项目。STM32CubeMX 的主要特点包括:

  • 直观的图形化界面,便于配置外设和设置
  • 自动生成初始化代码,减少开发时间
  • 支持广泛的 STM32 微控制器系列
  • 提供外设库、中间件和示例代码
  • 与主流集成开发环境 (IDE) 集成,如 Keil uVision 和 IAR Embedded Workbench

STM32CubeMX 和 MDK 的结合

STM32CubeMX 和 MDK 可以很好地配合使用,为 STM32 开发提供了一个高效且全面的解决方案。STM32CubeMX 用于快速配置外设和生成初始化代码,而 MDK 则用于编写、调试和编译应用程序代码。这种结合简化了开发过程,并使开发人员能够专注于应用程序逻辑,而不是底层硬件细节。本文将详细介绍如何使用 STM 32 CubeMX 创建一个 MDK 工程,并配置基本的外设和调试功能。

1. 选择 MCU 创建工程

首先,打开 STM 32 CubeMX 工具,选择菜单中的 “New Project” 来创建一个新的工程。
image.png

2. 输入芯片型号

在新建工程窗口中,输入你使用的 STM 32 芯片型号,例如 “STM 32 F 103 C 8”,方便快速找到你的实际型号。
image.png

3. 创建 CubeMX 工程

选择正确的芯片型号后,点击 “Start Project” 按钮,进入工程配置界面。
image.png

4. 配置 SYS

在配置界面中,找到并配置系统功能 (SYS),启用调试和重映射功能。
image.png

5. 配置 RCC

配置 RCC (时钟控制),选择适当的外部时钟源,如 HSE 或 LSE,确保系统时钟配置正确。
image.png

6. 配置串口

配置一个串口 (USART),将其用作调试窗口,方便输出调试信息。设置波特率、数据位、停止位等参数。
image.png

7. 配置时钟

在时钟配置页面,系统会根据前面的配置自动生成时钟树。如果有任何不符合预期的地方,可以进行微调,以确保时钟设置正确。
image.png

8. 配置工程

点击 “Project” 选项卡,填写工程名称和路径,选择 MDK-ARM (Keil uVision) 作为工具链,并填写一些基本的项目设置。
image.png
image.png

9. 生成代码工程

配置完成后,点击 “Generate Code” 按钮,生成代码工程。
image.png
image.png

10. 打开生成的代码工程

使用 Keil uVision 打开刚刚生成的代码工程文件 (. uvprojx),编译代码,确保没有错误。
image.png

11. 为 printf 输出到调试串口增加代码

main.c 文件中,添加以下代码来支持 printf 输出到调试串口:

#ifdef __GNUC__
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}

确保包含正确的头文件:

#include "usart.h"
#include <stdio.h>

image.png

12. 添加测试验证串口调试信息代码

main 函数中添加测试代码,验证串口调试信息输出:
image.png

编译代码,确保没有错误。

13. 配置烧写/调试工具

在 Keil uVision 中配置烧写和调试工具,选择合适的调试器(如 ST-Link)并进行相关设置。
image.png

14. 烧写程序并运行

将程序烧写到开发板上,烧写成功后,板子会自动重启运行。通过串口调试窗口,可以看到调试信息输出:
image.png

至此,一个最简单的裸机程序已经完成。希望这个教程能帮你快速上手 STM32CubeMX 和 MDK 开发。

也可扫码关注博主同名公众号"不解之榬",查看相关文章
不解之榬

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【YOLO 系列】基于YOLO V8的车载摄像头交通信号灯检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

前言 随着智能交通系统的发展&#xff0c;交通信号灯的准确识别对于提高道路安全和交通效率具有至关重要的作用。传统的交通信号灯识别方法依赖于固定的传感器和摄像头&#xff0c;存在安装成本高、维护困难等问题。为了解决这些问题&#xff0c;我们启动了这个项目&#xff0…

微软搁置水下数据中心项目——项目纳蒂克相比陆地服务器故障更少

“我的团队努力了&#xff0c;并且成功了&#xff0c;”COI负责人诺埃尔沃尔什说。 微软已悄然终止了始于2013年的水下数据中心&#xff08;UDC&#xff09;项目“纳蒂克”。该公司向DatacenterDynamics确认了这一消息&#xff0c;微软云运营与创新部门负责人诺埃尔沃尔什表示…

八大排序之希尔排序

一、概念及其介绍 希尔排序(Shell Sort)是插入排序的一种&#xff0c;它是针对直接插入排序算法的改进。 希尔排序又称缩小增量排序&#xff0c;因 DL.Shell 于 1959 年提出而得名。 它通过比较相距一定间隔的元素来进行&#xff0c;各趟比较所用的距离随着算法的进行而减小…

2024最新最全的车载测试教程__各模块测试用例

二、设计用例方法 1.测试用例设计前&#xff1a; a.仔细认真研读prd、理解prd b.质疑prd、有困惑或者想法的点做好记录&#xff0c;可以一次性和产品沟通 2.设计中&#xff1a; 成282 a.根据结构化思维&#xff0c;设计xmind i全链路正向功能点、子链路功能点 ⅱ.考虑业…

注意 llamaIndex 中 Chroma 的坑!

llamaIndex 做索引是默认存在内存中&#xff0c;由于索引需要通过网络调用 API&#xff0c;而且索引是比较耗时的操作&#xff0c;为了避免每次都进行索引&#xff0c;使用向量数据库进行 Embedding 存储以提高效率。首先将 Document 解析成 Node&#xff0c;索引时调用 Embedd…

指令调度基本概念

概述 为了提高处理器执行指令的并行度&#xff0c;处理器将计算机指令处理过程拆分为多个阶段&#xff0c;并通过多个硬件处理单元&#xff0c;将不同指令处理的前后阶段重叠并行执行&#xff0c;形成流水线(pipeline) 处理器的流水线结构是处理器微架构最基本的要素&#xf…

714. 买卖股票的最佳时机含手续费

714. 买卖股票的最佳时机含手续费 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;ExplanationSummary 参考代码&#xff1a;_714买卖股票的最佳时机含手续费 错误经验吸取 原题链接&#xff1a; 714. 买卖股票的最佳时机含手续费 https://leetcode.cn/probl…

“论微服务架构及其应用”写作框架,软考高级,系统架构设计师

论文真题 论微服务架构及其应用近年来&#xff0c;随着互联网行业的迅猛发展&#xff0c;公司或组织业务的不断扩张&#xff0c;需求的快速变化以及用户量的不断增加&#xff0c;传统的单块&#xff08;Monolithic&#xff09;软件架构面临着越来越多的挑战&#xff0c;已逐渐…

机器人阻抗控制相关文献学习(阻抗实现)

机器人阻抗是一个描述机器人与环境交互时动态特性的概念。 定义&#xff1a; 阻抗在机器人领域中&#xff0c;通常用来描述机器人与其环境之间的相互作用。当机器人与环境接触时&#xff0c;环境对机器人施加一个作用力&#xff0c;而机器人也会对环境施加一个反作用力。这个反…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广

6 图片增广 import matplotlib.pyplot as plt import numpy as np import torch import torchvision from d2l import torch as d2l from torch import nn from PIL import Image import liliPytorch as lp from torch.utils.data import Dataset, DataLoaderplt.figure(cat)…

【记录】使用远程SSH配置d2l环境(含装pytorch,同时适用于本地anaconda)

文章目录 前言一、从创建新环境开始二、使用步骤1.安装pytorch2.安装 d2l 包3.安装其他包4.使用jupyter notebook 前言 记录一下如何利用使用命令行进行anaconda配置 d2l环境、pytorch并进行训练深度学习模型。 一、从创建新环境开始 如果是本地直接装一个 anaconda 软件就行…

【决战欧洲杯巅峰】AI模型预测[走地数据]初步准备工作

数据准备 首先&#xff0c;我们需要收集一些与欧洲杯比赛相关的历史数据。这些数据可能包括球队的历史战绩、球员的能力评分、比赛场地信息、历史交锋记录等。这些数据可以从公开来源获取&#xff0c;并进行适当的预处理和清洗。 特征提取 接下来&#xff0c;我们需要从收集…

基于JSP的“塞纳河畔左岸”的咖啡馆管理系统

开头语&#xff1a; 塞纳河畔左岸的咖啡&#xff0c;我手一杯品尝的你美~ 哎哟&#xff0c;不错哦&#xff01;我们今天来介绍一下咖啡馆管理系统&#xff01; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果你对咖啡馆管理系统感兴趣或有相关需求&#xff0c;欢迎联…

BLDC无感控制策略

本文根据 BLDC 的电路模型推导了一个简 化磁链方程来估计转子位置,转速适用范围较 广;重点分析了反电动势和换相电流对转矩脉动 的影响;设计了一种BLDC的无速度传感器高速 驱动控制方案。通过试验验证了新型控制策略 的性能。 1 低速时的转子位置检测 图1 为高速无刷直流电…

C++的特殊类设计 饥饿汉模式

目录 特殊类设计 设计一个不能被拷贝的类 设计一个只能在堆上创建对象的类 设计一个只能在栈上创建对象的类 设计一个不能继承的类 设计模式 单例模式 饿汉模式 饥汉模式 特殊类设计 设计一个不能被拷贝的类 C98的设计方式&#xff1a;将该类的拷贝构造和赋值运算符…

UDS服务——RequestTransferExit(0x37)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍RequestTransferExit(0x37)—— 请求传输退出,用于终止数据传输的(上传/下载)。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿请求传输退出服务介绍一、服务请求报文定义transferRequestParame…

[SAP ABAP] 删除内表数据

1.利用索引删除数据 语法格式 DELETE <itab> INDEX <idx>. <itab>&#xff1a;代表内表 <idx>&#xff1a;代表索引值 删除内表<itab>中的第<idx>条记录 示例1 lt_student内表中存在3条数据记录 我们使用如下指令删除内表中的第一条数…

AIGC-Animate Anyone阿里的图像到视频 角色合成的框架-论文解读

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 论文:https://arxiv.org/pdf/2311.17117 网页:https://humanaigc.github.io/animate-anyone/ MOTIVATION 角色动画的目标是将静态图像转换成逼真的视频&#xff0c;这在在线零…

爬虫逆向实战(41)-某花顺登陆(Cookie、MD5、SHA256)

一、数据接口分析 主页地址&#xff1a;某花顺 1、抓包 通过抓包可以发现在登陆时&#xff0c;网站首先请求了pwdRangeCalcRegular.json、getGS两个接口&#xff0c;接着请求dologinreturnjson2进行登陆&#xff0c;但是此接口会返回请先完成滑块验证码校验的响应。然后网站…

C/C++ - 编码规范(USNA版)

[IC210] Resources/C Programming Guide and Tips 所有提交的评分作业&#xff08;作业、项目、实验、考试&#xff09;都必须使用本风格指南。本指南的目的不是限制你的编程&#xff0c;而是为你的程序建立统一的风格格式。 * 这将有助于你调试和维护程序。 * 有助于他人&am…