首页/新闻资讯/正文详情

STM32单片机使用STM32CubeIDE点灯程序记录

发布时间:2026/9/24 10:27:55 来源:云帆数科 栏目:资讯中心
STM32单片机使用STM32CubeIDE点灯程序记录
公司遗留了一个STM32的开发板我是安卓开发工程师第一次接触这个。慢慢摸索点灯写下此文档作为记录不为教学。1. 环境搭建1.1.STM32CubeMXST 在 STM32CubeIDE 2.0.0 中做了一个重要改动把 CubeMX 从 IDE 里剥离出来了。官方说明写得很清楚从 2.0 开始配置工作必须在独立的 STM32CubeMX 中完成然后再把生成的工程导入 CubeIDE 来编译和调试。https://www.st.com.cn/zh/development-tools/stm32cubemx.html#get-software1.2.STM32CubeIDEhttps://www.st.com.cn/zh/development-tools/stm32cubeide.html2. 进行点灯教程的方法用 CubeMX 配置引脚 → 生成 Keil 工程 → 用 Keil 写代码、编译、用 JLink 下载。我的方法用 CubeMX 配置引脚 → 生成 CubeIDE 工程 → 用 CubeIDE 写代码、编译、用 JLink 下载。本质区别只是把 写代码和编译的软件IDE 从 Keil 换成了 CubeIDE。点灯的代码逻辑、引脚配置、下载器JLink完全一样。2.1 使用STM32CubeMX生成初始程序2.1.1 双击打开STM32CubeMX2.1.2.搜索使用的芯片STM32G431C8T6Start My project from MCUCommercial Part Number 选择STM32G431C8T6双击load2.1.3 配置需要点亮的灯PA8这里是从原理图来看的开发板CAN_LIN_G431原理图.pdf来看PA8上有一个LR1灯点击PA8设置为GPIO_OutputCubeMX 的勾选只是决定 生成初始化代码 时要不要把对应引脚配置成“输出模式”并设置初始电平。它不会限制你后面写代码时能操作哪些引脚但是没有勾选其他引脚其他引脚不会输出任何东西它们处于“高阻态”相当于断路/悬空。2.1.4 打开调试接口防止后面电脑识别不到芯片System Core - SYS - Debug 设置为 Serial Wire时钟使用默认的不动就行2.1.5 保存为STM32CudeIDE项目Project NameCubeMXIEDLighting2Project LocationD:\project\STM32选择自己像要的目录Toolchain/IDESTM32CubeIDE2.2 使用STM32CudeIDE打开项目File - Open Projects form File System…点击Directory选择刚刚保存的目录2.2.1 如果打开后没有目录按照以下步骤打开目录window - Show View - Project Explorer2.3 编写点灯代码原来的代码这段代码能跑灯会闪但不建议长期这么写。原因GPIOA-ODR 0; 会影响整个 A 端口以后加了别的外设容易出问题。空循环延时不准且编译器优化后可能失效。可读性差别人看不懂 0x1FF 是啥意思。while(1){/* USER CODE END WHILE */// 注意这行是 CubeMX 生成的标记别删但你的代码写在它后面没问题GPIOA-ODR0;// 把 GPIOA 整个端口的输出数据寄存器清零PA8 输出低电平 → 灯亮for(unsignedinti0;i0x6FFFF;i);// 空循环消耗时间实现延时约几百毫秒GPIOA-ODR0x1FF;// 把 ODR 的低 9 位设为 10x1FF 二进制 1 1111 1111PA8 输出高电平 → 灯灭for(unsignedinti0;i0x6FFF;i);// 空循环延时比上面短所以灭的时间短/* USER CODE BEGIN 3 */}建议写法while(1){/* USER CODE END WHILE */HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);// PA8输出低电平灯亮板上LED是低电平点亮HAL_Delay(500);// 保持500毫秒0.5秒HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);// PA8输出高电平灯灭HAL_Delay(500);// 保持500毫秒// 循环执行灯就会一直亮0.5秒、灭0.5秒地闪烁/* USER CODE BEGIN 3 */}看一下HAL_GPIO_WritePin源码实现voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinState PinState){// 参数检查确保传入的引脚号合法assert_param(IS_GPIO_PIN(GPIO_Pin));// 参数检查确保传入的状态是 SET 或 RESETassert_param(IS_GPIO_PIN_ACTION(PinState));if(PinState!GPIO_PIN_RESET)// 如果要输出高电平{// 读当前 ODR 值 → 改某一位 → 写回 ODR。GPIOx-BSRR(uint32_t)GPIO_Pin;// 用 BSRR 寄存器把对应引脚置 1高电平}else// 否则输出低电平{GPIOx-BRR(uint32_t)GPIO_Pin;// 用 BRR 寄存器把对应引脚清 0低电平}}2.4 编译代码2.5 使用Jlink下载代码

相关推荐

学了新的忘了旧的,物理AI 自主学习能力 的账
学了新的忘了旧的,物理AI 自主学习能力 的账

【具身AGI导读】训练日志上看不见的一笔账:新技能装进去之后,原来那些本事还在不在。设想一台已经在产线上干了半年的机器人,拧螺丝、插排线都过了关。现在给它加一项新技能:把料盒码整齐。训练跑完,新任务确实学会了—… · 2026/9/24 10:27:49

Airbyte 低代码声明式连接器实战:TickTick 源连接器 manifest.yaml 配置深度解析与本地开发指南
Airbyte 低代码声明式连接器实战:TickTick 源连接器 manifest.yaml 配置深度解析与本地开发指南

数据工程数据集成ETL后端大数据 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted and Cloud. 项目地址: https://gitcode.… · 2026/9/24 10:27:43

MOS非本征电容:从驱动波形异常到开关损耗与EMI的实战解析
MOS非本征电容:从驱动波形异常到开关损耗与EMI的实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:27:11

AI PLC不是硬件升级,而是工业数据管道与控制范式重构
AI PLC不是硬件升级,而是工业数据管道与控制范式重构

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:59:19

树莓派语音辅助装置:为语言障碍者打造按键发声方案
树莓派语音辅助装置:为语言障碍者打造按键发声方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:59:19

团结引擎1.6.12鸿蒙打包实战:证书、HAP与避坑指南
团结引擎1.6.12鸿蒙打包实战:证书、HAP与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:59:19

PHP容器化生产环境避坑指南:镜像构建与Compose编排实战
PHP容器化生产环境避坑指南:镜像构建与Compose编排实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:59:06

智慧医院融合网络需求表:从业务拆解到技术参数全解析
智慧医院融合网络需求表:从业务拆解到技术参数全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:58:41

CH341A驱动安装全解:串口与I2C/SPI驱动区别及Win10/11实战
CH341A驱动安装全解:串口与I2C/SPI驱动区别及Win10/11实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 10:58:22

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码