keil + STM32CubeMX 开发stm32L0 踩坑

本文详细介绍了使用Keil与STM32CubeMX进行STM32L0系列微控制器开发的全过程,包括软件安装、配置及常见问题解决。特别强调了从官方网站下载资源的重要性,避免版本过时或潜在安全风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keil + STM32CubeMX 开发stm32L0 踩坑

我个人喜欢下载东西全部走官网 不喜欢去下别人给的乱七八糟的资源。

原因有二,一、找到头疼,版本说不定还旧。二、病毒,和各种奇奇怪怪的网盘链接

大家习惯从官方路径下载是最好的了,慢就VPN

关键词:STM32L051 STM32L07

安装软件

keil安装

如果你的keil在你打开32的程序的时候弹出这个提示:

Cannot read rte data from project file: RTE is not enabled

说明你安装的是51的keil不是32的keil,请去安装MDK的keil。
在这里插入图片描述
首先得安装keil 要安装MDK版本,其实怎么样都好,后续要导入pack包

  • 然后安装STM32CubeMX 如果提示缺乏java就按着提示去下载java安装

java安装

java链接(安装速度慢就挂VPN)

https://www.java.com/zh_CN/download/win10.jsp

在这里插入图片描述

stm32cubeMX安装

stm32cubeMX下载链接:

https://www.st.com/zh/development-tools/stm32cubemx.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VtOpKP0M-1595472519757)(C:\Uora-user-images\image-20200723102157838.png)]
往下翻一下就看到了
然后安装全程就看百度即可 很简单的

关于使用是记忆点

原谅Stm32CubeMX没有中文,不过记住一些基本操作是够用的了

一些记忆点:

  • cubemx其实是代码框架生成器,我是这样理解的。他有保护区代码,你再次调整配置生成的代码是不会影响的。
  • 记住 全部路径不可用中文 中文会出问题
  • cubeMX选型之后如果没有会下载芯片,挂VPN速度很快。

软件的超快速简易使用看一下b站这视频的前3P即可

https://www.bilibili.com/video/BV1Ht41157eu?p=1

keil的stm32L0 (pack包安装)下载

下面到万恶的pack包。stm32L0的pack包。优快云上都是奇奇怪怪的网盘,气死我了。

上链接:keil的pack包下载(必须挂VPN)下载速度巨快

https://www.keil.com/dd2/pack/#/eula-container

往下翻,就能看到了stm全型号 找到对应的下载即可

在这里插入图片描述

在这里插入图片描述
下载完之后直接双击运行,安装即可。

界面说明

下面是CUBEMX的界面记录


在这里插入图片描述

选好双击进入即可看到芯片,如果没下载应该是这个时候下载,记得挂VPN

几个关键设置:

  1. 地址不可以是中文
  2. 编译器选择正确来,MDK V5
  3. Code的 这一项得打钩,让main变得清净。

生成代码按键。然后去keil编译即可

备忘录:

  • 关于推挽输出和开漏输出,个人理解是开漏是为了防止直接产生高电平损坏后续电路。推挽输出就是直接驱动了,但是太大功率会烧芯片
    • 配合食用:https://blog.youkuaiyun.com/qq_38405680/article/details/81540067
    • https://blog.youkuaiyun.com/qq_27485531/article/details/81608784
  • 关于mos管
    • https://blog.youkuaiyun.com/qq_38405680/article/details/81274715
<think>好的,用户现在问的是关于Keil5和STM32新建工程的问题。之前他让我帮忙写了一个Python的樱花树代码,现在转向了嵌入式开发,可能是在做某个项目需要用到STM32。我得先确认他的需求。 首先,用户可能是刚开始学习STM32开发,对Keil5的环境不熟悉,所以需要一步步的指导。新建工程是入门的第一步,但Keil的设置对于新手来说可能有点复杂,特别是配置正确的库文件和芯片型号。 我需要回忆一下Keil5新建STM32工程的流程。通常步骤包括安装软件、选择芯片型号、添加启动文件、配置库文件(比如标准外设库或HAL库)、设置头文件路径、配置调试工具等等。可能用户还不太清楚需要哪些文件,或者容易在配置过程中出错。 考虑到用户之前是写Python的,可能对嵌入式开发工具链不熟悉,需要详细解释每一步的操作,特别是那些容易出错的地方,比如选择正确的芯片型号、添加启动文件、设置编译选项等。同时,可能还需要提醒他安装对应的设备包,因为有时候Keil5如果没有安装特定芯片的支持包,会找不到型号。 另外,用户可能没有说明使用的是标准库还是HAL库,需要给出两种情况的处理方法。或者,是否需要使用CubeMX来生成代码?不过问题明确是关于Keil5新建工程,所以可能暂时不需要涉及CubeMX,但可以提一下作为扩展。 还需要注意路径设置的问题,用户可能把文件放在不同的目录下,导致编译失败。要强调路径的正确性,以及如何添加头文件路径到工程设置中。 可能用户在实际操作中会遇到一些常见错误,比如启动文件缺失、链接脚本配置错误、或者编译器版本问题。这些都需要在步骤中提前预警,或者给出检查点。 最后,要确保步骤清晰,分点说明,避免使用过于专业的术语,或者解释清楚术语,比如启动文件(startup_stm32f10x_hd.s)、库文件的作用等。可能还需要给出一个简单的测试代码,比如点灯程序,让用户验证工程是否创建成功。 总结下来,回答的结构应该是:先介绍必要的前期准备,然后分步骤详细说明新建工程的过程,包括创建项目、选择芯片、添加文件、配置选项、编写测试代码、编译下载等。同时,提示常见问题和注意事项,帮助用户避免。</think>以下是使用 Keil MDK-ARM(Keil5)建立 STM32 工程的标准流程(以 STM32F103C8T6 为例): --- ### 一、前期准备 1. **安装软件** - Keil MDK-ARM(建议 v5.38 以上) - STM32 设备支持包(如 `Keil.STM32F1xx_DFP.2.4.0.pack`) 2. **准备文件** - CMSIS 核心文件(含 `core_cm3.c/h`) - 标准外设库(STD 库)或 HAL 库 - 对应芯片的启动文件(如 `startup_stm32f10x_hd.s`) --- ### 二、新建工程步骤 #### 1. 创建新工程 ```操作路径 Project → New μVision Project → 选择保存路径 → 输入工程名 ``` #### 2. 选择芯片型号 ``` 在弹出窗口中搜索并选择具体型号(如 STM32F103C8) → 点击 OK → 选择运行环境(CMSIS/Core 和 Device/Startup) → 勾选后点击 OK ``` #### 3. 工程结构搭建 ``` 右键 Target 1 → Manage Project Items → 创建文件夹结构(推荐): - CMSIS - Startup - User - Drivers - Libraries(如使用标准库) ``` #### 4. 添加关键文件 | 文件类型 | 典型路径示例 | |-------------------|---------------------------------| | 启动文件 | Libraries/CMSIS/Device/ST/STM32F1xx/Source/Templates/arm/ | | 系统文件 | Libraries/CMSIS/Include/ | | 外设库文件 | Libraries/STM32F1xx_StdPeriph_Driver/ | #### 5. 配置工程选项 ```关键设置 ① Target 标签: - 晶振频率(Xtal) - 使用微库(Use MicroLIB) ② Output 标签: - 勾选 Create HEX File ③ C/C++ 标签: - 添加头文件路径(如 ..\Libraries\CMSIS\Include) - 预定义宏(如 USE_STDPERIPH_DRIVER, STM32F10X_MD) ④ Debug 标签: - 选择调试工具(如 ST-Link Debugger) - 勾选 Reset and Run ``` #### 6. 编写测试代码 ```c // main.c 示例 #include "stm32f10x.h" void Delay(uint32_t nCount) { for(; nCount != 0; nCount--); } int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); while(1) { GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); Delay(0xFFFFF); GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET); Delay(0xFFFFF); } } ``` --- ### 三、常见问题处理 1. **找不到设备支持包** - 通过 Pack Installer(图标)在线安装对应DFP包 2. **启动文件选择错误** - 根据芯片容量选择正确后缀: - ld:小容量(16-32KB Flash) - md:中容量(64-128KB) - hd:大容量(256-512KB) 3. **链接错误(undefined symbol)** - 检查是否遗漏 SystemInit() 函数 - 确认启动文件是否包含芯片对应中断向量表 4. **优化等级冲突** - 在 C/C++ 选项卡设置 Optimization Level 为 -O0(调试阶段) --- ### 四、工程验证流程 1. 编译工程(F7) 2. 连接开发板并供电 3. 下载程序(F8) 4. 复位运行(观察 LED 闪烁) --- ### 五、推荐扩展设置 1. **使用 CubeMX 生成初始化代码** ```进阶操作 ① 在 STM32CubeMX 中配置时钟和外设 ② 生成 MDK-ARM 工程 ③ 在 Keil 中继续开发 ``` 2. **添加版本控制** ```建议配置 - 在工程目录初始化 Git 仓库 - 忽略临时文件(添加 .gitignore): *.uvguix.* *.axf *.lnp *.build_log.htm ``` --- 该流程适用于大多数 Cortex-M 系列芯片开发,具体参数需根据实际使用的 STM32 型号调整。建议首次使用时配合 STM32 官方数据手册和库文件文档操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值