STM32CubeMX代码生成和点亮LED

2023-11-01

所需工具STM32CubeMX和Keil5

1、先打开STM32CubeMX软件,点击New Project新建工程;

2.在搜索框中搜索你的项目芯片;

3、搜索出来有两个不同封装的芯片,写程序没区别,但是这个软件可以生成IO说明文档,可能会导致文档与实际封装差异。选择确定后双击~;

4、创建完工程,简单介绍一下功能;

5、先配置时钟树,我使用的F429最大支持180M时钟,我配置为最大时钟。

6、我的板子LED是接在PA11上的,在搜索栏上搜索PA11,芯片PA11会一闪一闪的。

7、点击PA11引脚,会出现下面画面,我们选择GPIO_Output

8、当PA11选择作为输出时,外设USB功能会无法使用,软件会通过红色的叉号提示引脚冲突;

9.点击Configuration>>GPIO,进行详细的外设配置。

10.详细参数配置,如下图,完成后点击OK.

11.工程设置,填好工程名、工程路径;最重要的是选择编程工具,如果忘了选可以点击project>>settings重新选择。

12.打开工程,根据你在工程设置中选择的编程工具打开。

13.图片第三点是十分重要,很多新手没注意,以为可以在工程里面随便找个空白的地方就可以写自己的代码,当通过STM32CubeMX重新生成代码的时候,就发现自己辛辛苦苦写的代码没有了,找不回来了,一瞬间回到解放前欲哭无泪(我何尝不是这样过来的,哎...~!)。通过STM32CubeMX生成的模板代码必需按照模板的规范写,打开工程你就看到有很多的地方写着 

/* USER CODE BEGIN 2 */

添加自定义代码

  /* USER CODE END 2 */

所有的自定义代码一定要放在这中间。避免代码重生成删除,代码添加在BEGIN和END间就好了。

没吃过这种亏的同学可以自己做一下测试,毕竟我说的再多不如自己随便在BEGIN和END外写点代码试试效果。(hahaha...)

14.在main函数的while中添加如下代码:

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
	  HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);	//LED取反
	  HAL_Delay(1000);				//延时1秒
	
  }
  /* USER CODE END 3 */

15.请测试,把代码写在BEGIN和END外,如下:

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */
	  HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);	//LED取反
	  HAL_Delay(1000);				//延时1秒
  /* USER CODE BEGIN 3 */

	
  }
  /* USER CODE END 3 */

然后关闭KEIL5;打开STM32CubeMX点击完毕后open project;最后看看while内的代码变化(手动滑稽);

16.赶着下班差点忘了,每次做完一个项目写文档都是一个十分痛苦的过程,可意会不可言传。这个软件可以生成一下我们使用外设的相关信息文档适当减轻我们的压力,嘻嘻...(我也是一个热爱写文档的三好程序员)。

  全篇完。

本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解,记录成长笔记。
笔记是以最简单的方式,只展示最核心的原理。
若有与 大神大大 见解有歧义,我绝对坚信 大神大大 见解是对的,我的是错的。
若无积分等无法下载源码,可加入QQ群657407920下载交流经验。感谢~!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32CubeMX代码生成和点亮LED 的相关文章

  • DSP 库 - RFFT - 奇怪的结果

    最近我一直在尝试在我的STM32F4 Discovery评估板上进行FFT计算 然后将其发送到PC 我已经调查了我的问题 我认为我对制造商提供的 FFT 函数做错了 我正在使用 CMSIS DSP 库 现在我一直在用代码生成样本 如果工作正
  • 将 GCC 内联汇编与采用立即值的指令结合使用

    问题 我正在为 ARM Cortex M3 处理器开发定制操作系统 为了与我的内核交互 用户线程必须生成 SuperVisor Call SVC 指令 以前称为 SWI 用于软件中断 该指令在ARM ARM中的定义是 这意味着该指令需要即时
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • 如何在 Android 设备上运行 VS Code [重复]

    这个问题在这里已经有答案了 我有 Galaxy Tab S6 它具有替代笔记本电脑的很酷的功能 例如连接鼠标和键盘 但不幸的是它运行 Android 操作系统 并且没有很多开发应用程序可用于 Android 所以我想是否有一个选项可以在至少
  • 有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 进行编译?

    如果有很多浮点运算正在进行 Apple 建议针对 ARM 进行编译 而不是针对拇指进行编译 我的整个应用程序几乎是一个大型浮点运算 iOS 应用程序开发工作流程指南中是这样说的 iOS 设备支持两种指令集 ARM 和 Thumb Xcode
  • ARM + gcc:不要使用一大块 .rodata 部分

    我想使用 gcc 编译一个程序 并针对 ARM 处理器进行链接时间优化 当我在没有 LTO 的情况下编译时 系统会被编译 当我启用 LTO 时 使用 flto 我收到以下汇编错误 错误 无效的文字常量 池需要更近 环顾网络 我发现这与我系统
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 了解 ctags 文件格式

    我使用 Exhuberant ctags 来索引我的 c 项目中的所有标签 c project 是 Cortex M7 微控制器的嵌入式软件 结果是一个标签文件 我正在尝试阅读该文件并理解所写的内容 根据我找到的 ctags 和 Exhub
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • 为什么前向引用 ADR 指令在 Thumb 代码中以偶数偏移进行汇编?

    To bx对于 Thumb 函数 需要设置地址的最低有效位 GNU 作为文档states https sourceware org binutils docs as ARM Opcodes html当地址是从一个生成时这是如何工作的adr伪
  • 你好世界,裸机 Beagleboard

    我正在尝试在我的 Beagleboard xm rev 上运行 hello world 类型的程序 C 通过调用 Cputs功能来自装配 到目前为止 我一直使用这个作为参考 http wiki osdev org ARM Beagleboa
  • LDR指令如何将常量加载到寄存器中?

    我刚刚读了一本ARM指令书 看到一条指令我无法解释 It says LDR将 32 位常量加载到r0登记 LDR r0 pc const number 8 pc const number DCD 0xff00ffff 我不明白什么 pc c
  • 已编译 LKM 的互换性

    是否可以使用可加载内核模块 编译为3 0 8 mod unload ARMv5 我自制的内核 在具有版本的内核中3 0 31 gd5a18e0 SMP preempt mod unload ARMv7 安卓股票内核 该模块本身几乎不包含任何
  • 了解带有 pc 偏移的 Cortex-M 组件 LDR

    我正在查看这段 C 代码的反汇编代码 define GPIO PORTF DATA R volatile unsigned long 0x400253FC int main void Initialization code while 1
  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • 什么是 .axf 文件?

    我是arm架构的新手 我从事嵌入式软件工作 并试图了解我的项目二进制文件的调试文件夹中存在的 axf文件 发现它是链接器在构建过程中生成的arm可执行格式文件 用于调试崩溃 所以很明显它包含了一些调试信息 但不清楚具体是什么信息 而且deb

随机推荐

  • Centos下环境变量

    文章内容如下 1 什么是环境变量 2 如何通过程序获取环境变量 3 常识规律 一 环境变量的定义 环境变量就是指一段路径 定义环境变量主要是为了方便的执行程序 添加环境变量的方法是export PATH PATH A B export PA
  • 12.示例程序(定时器定时中断&定时器外部时钟)

    目录 定时中断和时钟源选择相关库函数使用 1 定时器初始化配置 2 参数 PSC ARR等 更改函数 在程序运行过程中修改 3 使用定时器库函数的一些细节 定时器定时中断实例 定时器外部时钟选择 知识点get 滤波器工作原理 可以滤掉信号的
  • python爬虫处理滑块验证_Python 爬虫进阶必备

    今日网站 aHR0cHM6Ly9idWxsZXRpbi5jZWJwdWJzZXJ2aWNlLmNvbS8 这个网站是比较简单的滑块验证码 没有涉及指纹 轨迹以及 JS 的加密 但是有助于进一步了解滑块验证码的具体实现和分析流程 所以作为 C
  • J2EE之集合框架

    集合框架01 0 UML 统一建模语言 1 Collection接口 1 1 集合框架的顶级接口 1 2 是Set和List的父接口 1 3 但不是Map的父接口 集合中只能添加引用类型数据 2 List接口 2 1 特点 有序 对象可以重
  • 解决centOS8下Unit network-manager.service not found的问题

    systemctl restart NetworkManager 使用上面的命令即可
  • armbian打印服务器恩山无线,刷了armbian后用cups共享打印非常爽

    另楼主我输入apt get install hannah foo2zjs printer driver foo2zjs common printer driver foo2zjs命令返回有错误啊何解Setting up dc 1 06 95
  • 借助PLC-Recorder,西门子PLC S7-1200实现4ms准确周期采集的方法(带时间戳采集)

    目录 1 测试条件 2 测试结论 3 PLC的发送程序 4 PLC连接配置 5 PLC Recorder侧的通讯设置 6 PLC Recorder的通道配置 7 PLC Recorder的变量配置 8 正常通讯情况的界面 9 记录数据的情况
  • hive sql求多个字段的最小值和最大值的办法

    1 准备数据表test2 create table test2 a int b int c int d int e int 2 准备2条数据 insert into table test2 values 5 1 3 8 6 insert i
  • 软件测试策略概述

    一般来说 测试策略描述了软件开发过程中进行测试方法 用来告诉测试过程中所有可能的参与者 测试活动应该如何进行 其中主要会包括测试目标 测试新功能的方法 测试项目的时间和资源 以及测试环境等等 除此以外 测试策略应该描述测试过程中存在哪些风险
  • 前端将后端返回的文件流转成url

    将返回的流数据转换为url export function getObjectURL file type return window URL createObjectURL new Blob file type base64转url exp
  • 2020-09-27 IDEA Maven dependencyManagement中的依赖版本会覆盖传递依赖版本

    IDEA Maven dependencyManagement中的依赖版本会覆盖传递依赖版本 参考帖子 Maven传递依赖的坑 父pom中dependencyManagement版本优先级高于传递依赖版本 问题描述 同一个项目 同事拉取其他
  • 常用正则表达式

    正则表达式用于字符串处理 表单验证等场合 实用高效 现将一些常用的表达式收集于此 以备不时之需 匹配中文字符的正则表达式 u4e00 u9fa5 评注 匹配中文还真是个头疼的事 有了这个表达式就好办了 匹配双字节字符 包括汉字在内 x00
  • Python移动和嵌入式视觉应用卷积神经网络模型压缩策略

    概述 模型压缩是在计算资源有限且能耗紧张的移动设备上 有效部署神经网络模型的关键技术 传统的模型压缩技术依赖于手工制作的启发式和基于规则的策略 这需要领域专家探索在模型大小 速度和准确性之间进行权衡的大型设计空间 这通常是次优且耗时的 在本
  • dos 添加防火墙入站规则

    dos 添加防火墙入站规则 使用DOS命令如何操作Windows防火墙 命令介绍及应用举例 一 命令格式 netsh firewall 参数 命令功能 显示命令列表 add 添加防火墙配置 delete 删除防火墙配置 dump 显示一个配
  • NoClassDefFoundError之BeanCreationException异常

    前言 根据部门技术要求 同时提高系统的稳定性和易维护性 需要对现有系统进行技术升级改造 在技术改造的过程中难免会遇到一些问题 令我印象比较深刻的就是文章标题所说的BeanCreationException异常 这个看似比较常见的异常出现的原
  • function/bind的救赎(上)

    本文转自孟岩的博客 http blog csdn net myan article details 5928531 这是那篇C 0X的正文 太长 先写上半部分发了 Function bind可以是一个很简单的话题 因为它其实不过就是一个泛型
  • linux查看进程 显示,Linux如何查看和控制进程

    Linux如何查看和控制进程 前言 程序是保存在外部存储介质 如硬盘 中的可执行机器代码和数据的静态集合 而进程是在CPU及内存中处于动态执行状态的计算机程序 在Linux系统中 每个程序启动后可以创建一个或多个进程 例如 提供Web服务的
  • 等高线种类及特点

    地形图上的等高城分为首曲线 计曲线 间曲线和助曲线四种 见下图 首曲线 又叫基本等高线 是按规定的等高距 由平均海水面起算而测绘的细实线 线粗0 1毫米 用以显示地貌的基本形态 计曲线 又叫加粗等高线 规定从高程起算面 平均海水面 起算的首
  • 一个月,英语能提高多少?附资料分享

    学习语言是一个漫长的过程 但对于我这样一个英语小白 利用业余时间 一个月的学习 还是能看到不少的进步 除了听 说 读 写等能力方面有提升之外 最大的收获就是培养了英语学习和运用的兴趣 这样的结果对我来说 还是很满意的 自然也多了继续探索英语
  • STM32CubeMX代码生成和点亮LED

    所需工具STM32CubeMX和Keil5 1 先打开STM32CubeMX软件 点击New Project新建工程 2 在搜索框中搜索你的项目芯片 3 搜索出来有两个不同封装的芯片 写程序没区别 但是这个软件可以生成IO说明文档 可能会导