当前位置: 首页 > news >正文

工程建立 - LI,Yi

1. 软件安装

视频选集(3/50)[2-1] 软件安装

注.跟着视频走就可以了,以下是一些注意事项

  1. 弹出的Pack Installer窗口是用来安装器件支持包的

image-20250728132321366

  1. 该支持包只有Keil5需要安装,之前的版本不需要

  2. 支持包选项出现的原因:ARM的芯片型号非常多,同时支持所有型号的芯片,会让软件体积过大;因此将芯片的器件支持包独立出来,用户只需安装所开发芯片对应的软件支持包即可

    如果没有安装支持包,新建工程时找不到相应的器件型号

    image-20250728133311382

    image-20250728133335956

    image-20250728133358756

2. STM32的开发方式

视频选集(3/50)[2-2] 新建工程

  • 基于寄存器的方式:用程序直接配置寄存器,来实现想要的功能

    优点:直接、效率高。但STM32结构复杂、寄存器多,不推荐该方式

  • 基于标准库的方式:使用ST官方提供的封装好的函数,通过调用这些函数来间接地配置寄存器

    本课程使用该方式进行开发

  • 基于HAL库的方式:可用图形化界面快速配置STM32

    这种方式隐藏了底层逻辑

3. 新建工程

2.1 开发环境与器件

  • 开发环境:Keil MDK5.36
  • 开发芯片:STM32F103C8T6
  • 配置材料:STM32库函数压缩包STM32F10x_StdPeriph_Lib_V3.5.0.zip

2.2 环境配置

(1) 固件库介绍

  • Libraries:库函数的文件

  • Project:官方提供的工程示例和模板

  • Utilities:官方评估板的相关例程

    【评估板】官方用STM32做的一个小电路板,用来评测STM32

  • Release_Notes.html:库函数的发布文档

  • stm32f10x_stdperiph_lib_um.chm:库函数的使用手册

image-20250728134508760

(2) 创建工程

  1. 创建一个总文件夹STM32Project,用于收纳所有的工程文件

  2. ./STM32Project的路径下,创建2-1 STM32工程模板文件夹,用来存放本次工程文件

  3. 打开Keil5,创建新工程文件

    image-20250728175027334

  4. 选择相应的路径;給工程命名;保存

    image-20250728175217269

  5. 选择开发芯片的型号

    image-20250728175428797

    image-20250728175515399

  6. 这里会弹出Keil软件的新建工程小助手,它可以帮助快速新建工程。暂时不需要用到这个,关掉即可

    image-20250728175657843

  7. 到这一步,我们已经创建了一个空工程文件

    image-20250728175834869

    image-20250728180036285

  8. .\STM32Project\2-1 STM32工程模板路径下,创建Start文件夹,用以存放必要的配置文件。需要复制粘贴到.\STM32Project\2-1 STM32工程模板\Start路径下的文件有:

    • .\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm路径下的所有文件:STM32的启动文件

      STM32的程序从启动文件开始执行

    • .\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32路径下的stm32f10x.h:STM32的外设寄存器描述文件

      作用和51单片机的头文件REGX52.H一样,描述STM32有哪些寄存器和其对应的地址

    • .\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32路径下的system_stm32f10x.csystem_stm32f10x.h:用来配置时钟

    • .\Libraries\CMSIS\CM3\CoreSupport路径下的core_cm3.c和core_cm3.h:Cortex-M3内核寄存器描述文件

    image-20250728182214560

  9. 把配置文件添加到Keil工程文件中

    • Source Group 1重命名为Start。右键Start添加文件

      image-20250728182631476

    • 首先添加启动文件。启动文件有很多类,只能添加其中一个,本项目开发器件型号对应的启动文件为startup_stm32f10x_md.s

      image-20250728183346112

    • 然后将启动文件以外的其他文件都添加进来。添加完点击Close关闭窗口

      image-20250728183535390

      这些文件都是STM32中最基本的文件,不需要我们进行修改,添加进来即可。文件图标上的黄色钥匙,指示它是一个只读文件

  10. 在Keil工程文件中添加配置文件的头文件路径

    若未添加头文件路径,软件会报错:找不到.h文件

    image-20250728184036014

    image-20250728184116546

    image-20250728184151575

    image-20250728184209994

    这里添加完,会变成一个较短的相对路径

    image-20250728184255043

  11. .\STM32Project\2-1 STM32工程模板路径下,创建User文件夹,用以存放main.c文件。

    image-20250728184548168

  12. Keil工程文件中右键Target1,创建组,对应命名为User

    image-20250728184717312

    image-20250728184751884

  13. 右键User,创建新文件

    image-20250728184910493

  14. 在弹出窗口中选择文件类型、命名为main.c、选择存放路径

    image-20250728185055721

    image-20250728185256237

    image-20250728185320263

  15. 在main.c文件中,右键,插入头文件

    image-20250728185720789

  16. 在main函数里写一个空的死循环

    注意:任何文件的最后一行必须是空行,否则编译后会弹警告

    image-20250728185952851

  17. 进行编译

    image-20250728190108885

  18. 编译后,发现有报错

    image-20250728190203700

  19. 阅读Error中的描述,发现是编译器的问题:编译器版本过新,导致某些语句不被支持。需要更换编译器版本

    image-20250728190905277

    image-20250728190942684

  20. 再编译一次,显示0 Error。工程创建完成

    当前工程未添加STM32的库函数,所以仍是一个基于寄存器开发的工程文件

    image-20250728191110037

    image-20250728191709363

http://www.vanclimg.com/news/603.html

相关文章:

  • Java基础语法学习 ———— Day1
  • 29
  • 第二十六天
  • 2025 -- 云智计划 -- 【CSP-S】模拟赛 #1_总结+题解
  • 习题-有限集
  • 人工智能驱动企业:通过情境感知AI重塑组织0引言
  • 亚马逊机器人如何应对交通拥堵
  • 00.01.Linux 应急响应:账号安全与入侵排查
  • 2025年7月28日
  • html重定向
  • 搜索结果太乱?5种重排序模型让你的搜索系统准确率提升40%
  • PCIe【6】SR-IOV
  • 服务器新手常见错误及网站搭建问题解析
  • Java面试见闻2025-7
  • 7月28日总结
  • 服务器外的文件,复制不到服务器上面
  • 数据资产到底值不值钱 - 智慧园区
  • LIS笔记
  • CF2122G Tree Parking 题解
  • 03_Wazuh安装和使用.md
  • 01_pfSense防火墙安装和使用文档
  • 新视角问诊通
  • 寻医问药小程序系统
  • c# ACME client
  • 寻疗智慧 IOT 数字健康服务平台
  • 入职—员工体验的关键时刻,看AI Agent如何将体验值、效率值双双拉满
  • 文件完整性校验工具 CHK 5.51 绿色中文版
  • 2025年7月26日,工信部人才交流中心 CUUG - PGCP/PGCM认证考试完成!
  • 链上充值监听与自动划转资金流程实现 - fox
  • synchronized底层实现是什么 lock底层是什么 有什么区别