首页 > 其他分享 >STM32CubeMX 创建 MDK 工程

STM32CubeMX 创建 MDK 工程

时间:2024-06-24 12:01:35浏览次数:19  
标签:MDK 创建 代码 配置 STM32CubeMX 串口 调试

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 开发。

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

标签:MDK,创建,代码,配置,STM32CubeMX,串口,调试
From: https://blog.csdn.net/LT450196683/article/details/139905683

相关文章

  • RT-Thread 体验教程:1.STM32CubeMX与RT-Thread的简易化学反应
    基于STM32CubeMX与RT-Thread的入门体验教程本入门体验教程将指导你如何基于STM32CubeMX生成的工程,手动移植RT-Thread源码,并进行基础开发。关于如何使用STM32CubeMX创建工程,可以参考网上的相关教程,也可以参考本博客的文章《STM32CubeMX创建MDK工程》。1.创建RT-Thre......
  • python创建websocket服务器,实现循环发送消息
    WebSocket协议是在2008年由Web应用程序设计师和开发人员创建的,目的是为了在Web浏览器和服务器之间提供更高效、更低延迟的双向通信。它允许客户端和服务器在任何时候发送消息,无需重新建立TCP连接。WebSocket可以在Web浏览器和服务器之间传输文本和二进制数据,使得构建实时Web......
  • PixiJS教程(一):创建精灵
    Pixi.js中的精灵(Sprite)是游戏开发中常见的概念,特指用于在屏幕上渲染的图像或纹理(Texture)的实例。在Pixi.js中,精灵是基本元素之一,通常用于显示图像。本教程采用PixiJS7.2版本精灵在Pixi.js中的使用涉及以下几个主要步骤:创建精灵创建精灵的方法有多种,这里展示比较常用的con......
  • 【Gradio】Chatbot | 如何使用 Gradio Blocks 创建自定义聊天机器人
    简介重要提示:如果您刚开始接触,我们建议使用 gr.ChatInterface 来创建聊天机器人——它是一个高级抽象,使得可以快速创建漂亮的聊天机器人应用程序,往往只需一行代码。在这里了解更多信息。本教程将展示如何使用Gradio的低级BlocksAPI从头开始制作聊天机器人UI。这将使......
  • mysql 如何分配root账号创建数据库的权限
    1.mysql如何分配root账号创建数据库的权限在MySQL中,root用户通常具有所有的权限,包括创建数据库的权限。但是,如果我们想要为另一个用户分配创建数据库的权限,或者想要限制root用户对某个特定数据库或服务器的权限(尽管这在实际操作中并不常见,因为root用户通常应该是无限制的......
  • mysql 如何分配root账号创建数据库的权限
    1.mysql如何分配root账号创建数据库的权限在MySQL中,root用户通常具有所有的权限,包括创建数据库的权限。但是,如果我们想要为另一个用户分配创建数据库的权限,或者想要限制root用户对某个特定数据库或服务器的权限(尽管这在实际操作中并不常见,因为root用户通常应该是无限......
  • pyqt5创建主窗口(介绍窗口类型)
    创建主窗口(介绍窗口类型)我们用QMainWindow主窗口代码来创建UIQMainWindow.setWindowTitle(字符串),设置窗口标题QMainWindow.resize(800,400),设置窗口尺寸QMainWindow.statusBar(),获取状态栏对象QMainWindow.showMessage('停留5秒消息',5000)QApplication.setWindowIcon(QIco......
  • Postgre创建分区表
    创建范围分区表#创建分区表主表CREATETABLEperson_1(idSERIALNOTNULL,nameVARCHARNOTNULL,begin_timeTIMESTAMP,end_timeTIMESTAMP)PARTITIONBYRANGE(begin_time);#创建分区表子表createtableperson_1_2024_06_23partitionofp......
  • 2.创建表和数据类型
    --切换数据库useDBTESTifexists(select*fromsys.tableswherename='Department'andtype='U')----如果有这个名称(DBTES)的数据库,并且type的值为U(用户创建的)droptableDepartment--删除表--类型:--char:定长,char(10),无论存储的数据是否到了10个字节,都要占用10......
  • Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用
     原文链接:http://cshelloworld.com/home/detail/1804473083243925504当我们点击win10系统搜索框的时候,输入名称,win10会帮助我们匹配到对应的应用。这里搜索框实际上就是windows系统的开始菜单。接下来我们随便找一个应用,右键,然后点击打开文件位置,我们来看下这个EveryThing的......