Stm32CubeMX+Proteus仿真入门 STM32开发环境+最小系统介绍 📅 发布时间:2026/7/11 8:49:31 👁️ 浏览次数: Stm32CubeMXProteus仿真入门第一章1. 前言本教程主要服务于STM32初学者(菜鸡)结合Stm32CubeMX和Protues教一些基本单片机概念。2. 开发环境搭建编译软件为Keil 5 MDK 525Prestm32cubemxKEIL5 MDK仿真软件版本Proteus8.9或者更新版本部分实物演示使用的开发板型号为普中-精灵1 STM32F103C8T63. STM32介绍STM32分为三部分ST是公司名称–意法半导体。M是Microelectronics 的缩写表示微控制器。32表示32位处理器。结合起来就是意法半导体公司设计开发的一系列芯片大学牲最常用的芯片型号是STM32F103c8t6。除了STM32市面上常见的32位微控制器还有GD32MM32等国产芯片NXP的S32K3等国外芯片。本教程仿真使用的芯片是STM32F103C6T6芯片引脚脚位和STM32F103C8T6一致内部资源比C8T6少。细节上主要有以下几点区别。1.C6T6没有串口3及USART32.C6T6没有通用定时器TIM43.C6T6没有串行外设接口SPI24.C6T6没有I2C25.C6T6的flas为32K C8T6为64K6.C6T6的RAM为10KC8T6为20K。选择C6主要是为了适配更多Proteus 版本以及兼顾实物测试。STM32F103C8T6 芯片有这么多管脚那么怎么知道相应管脚的具体功能呢我们可以通过芯片数据手册来查找STM32F103C8T6 芯片数据手册在资料“03数据手册STM32F103C6T6A_规格书_ST(意法半导体)单片机(MCU_MPU_SOC)规格书.pdf”。打开第25页。STM32 的应用取决于其内部资源前面STM32内部拥有非常多的通信接口。所以如果你使用的模块拥有此接口就可以通信。STM32Proteus可以实现按键、数码管、点阵屏、LCD1602、DHT11、DS18B20等常见的元器件仿真。以下分别是基于STM32土壤湿度检测自动浇水仿真设计HAL库、STM32温湿度测量报警仿真设计标准库、 简易电子秒表仿真设计标准库。4. STM32软件开发4.1. 软件开发方法STM32的三种开发方式通常新手在入门STM32的时候首先都要先选择一种要用的开发方式不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库而极少部分人会通过直接配置寄存器进行开发。注意以下三种方法主要是针对初始化业务代码还是需要自己来动手写只不过在调用底层代码的时候有区别。网上关于标准库、HAL库的描述相信是数不胜数。可是一个对于很多刚入门的朋友还是没法很直观的去真正了解这些不同开发发方式彼此之间的区别所以笔者想以一种非常直白的方式用自己的理解去将这些东西表述出来如果有描述的不对的地方或者是不同意见的也可以大家提出。1、直接配置寄存器不少先学了51的朋友可能会知道会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的这种方法到了STM32就变得不太容易行得通了因为STM32的寄存器数量是51单片机的十数倍如此多的寄存器根本无法全部记忆开发时需要经常的翻查芯片的数据手册此时直接操作寄存器就变得非常的费力了。但还是会有很小一部分人喜欢去直接操作寄存器因为这样更接近原理知其然也知其所以然。2、标准库上面也提到了STM32有非常多的寄存器而导致了开发困难所以为此ST公司就为每款芯片都编写了一份库文件也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中包括一些常用量的宏定义把一些外设也通过结构体变量封装起来如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器从而选择不同的功能。也是目前最多人使用的方式也是学习STM32接触最多的一种开发方式我也就不多阐述了。3、HAL库HAL库是ST公司目前主力推的开发方式全称就是Hardware Abstraction Layer抽象印象层。库如其名很抽象一眼看上去不太容易知道他的作用是什么。实际上就是为了让开发者脱离底层初始化更方便移植代码更适合大学牲做课程设计和毕业设计。它的出现比标准库要晚但其实和标准库一样都是为了节省程序开发的时期而且HAL库尤其的有效如果说标准库把实现功能需要配置的寄存器集成了那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说同样的功能标准库可能要用几句话HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题不同型号的stm32芯片它的标准库是不一样的例如在F4上开发的程序移植到F3上是不能通用的而使用HAL库只要使用的是相通的外设程序基本可以完全复制粘贴注意是相通外设意思也就是不能无中生有例如F7比F3要多几个定时器不能明明没有这个定时器却非要配置但其实这种情况不多绝大多数都可以直接复制粘贴。是而且使用ST公司研发的STMcube软件可以通过图形化的配置功能直接生成整个使用HAL库的工程文件可以说是方便至极但是方便的同时也造成了它执行效率的低下在各种论坛帖子真的是被吐槽的数不胜数。–参考文章https://blog.csdn.net/u012846795/article/details/122227823需注意本教程使用的正是第三种开发方法使用的是图形编程工具STM32cubeMX做初始化。除此之外Hal还可以通过开发者自行移植标准hal库新建工程完成代码初始化。4.2. stm32 GPIO介绍GPIO简单理解为用户可以修改单片机引脚输入或者输出功能。GPIO有8 种工作模式。GPIO_Mode_AIN 模拟输入GPIO_Mode_IN_FLOATING 浮空输入GPIO_Mode_IPD 下拉输入GPIO_Mode_IPU 上拉输入GPIO_Mode_Out_OD 开漏输出GPIO_Mode_Out_PP 推挽输出GPIO_Mode_AF_OD 复用开漏输出GPIO_Mode_AF_PP 复用推挽输出GPIO其内部结构图,如下图片在Stm32F1xx中文参考手册的105页1保护二极管IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入当引脚电压高于VDD_FT时上方的二极管导通当引脚电压低于VSS时下方的二极管导通防止异常常电压引入芯片导致芯片烧毁。2上拉、下拉电阻控制引脚默认状态的电压。打开上拉的时候引脚默认电压为高电平打开下拉的时候引脚默认电压为低电平。3TTL施密特触发器基本原理是当输入电压高于正向阈值电压输出为高当输入电压低于负向阈值电压输出为低IO口信号经过触发器后可以将电平分为高电平与低电平也就是1和0的数字信号并且符合TTL电平协议这就是STM32可以产生TTL信号的原因。4P-MOS管和N-MOS管输出电平信号由P-MOS管和N-MOS管决定高电平时P-MOS管导通N-MOS管关闭输出高电平低电平时P-MOS管关闭N-MOS管导通输出低电平这就使得GPIO具有“推挽输出”和“开漏输出”的模式 。右侧I/O引脚部分为芯片暴露在外部的引脚每个引脚在数据手册都有说明是否支持(识别))5V电压GPIO的8种工作方式4种输入模式输入浮空输入上拉输入下拉模拟输入4种输出模式开漏输出开漏复用功能推挽输出推挽复用功能可配置3种最大翻转速度2MHz10MHz50MHz1.GPIO输入工作模式1-输入浮空模式1)外部通过IO口输入电平,外部电平通过上下拉部分(浮空模式下都关闭,既无上拉也无下拉电阻)2)传输到施密特触发器(此时施密特触发器为打开状态)3)继续传输到输入数据寄存器IDR4)CPU通过读输入数据寄存器IDR实现读取外部输入电平值在输入浮空模式下可以读取外部输入电平常见应用浮空输入模式由于输入阻抗较大一般把这种模式用于标准通信协议的 I2C,USART 的接收端2.GPIO输入工作模式2-输入上拉模式和输入浮空模式相比较,不同之处在于内部有一个上拉电阻连接到VDD(输入上拉模式下,上拉电阻开关接通,阻值约30-50K)外部输入通过上拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取常见应用监测外部电平信号比如按键开关。3.GPIO输入工作模式3-输入下拉模式和输入浮空模式相比较,不同之处在于内部有一个下拉电阻连接到VSS(输入下拉模式下,下拉电阻开关接通,阻值约30-50K)外部输入通过下拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取常见应用监测外部电平信号比如按键开关。4.GPIO输入工作模式4-输入模拟模式上拉和下拉部分均为关闭状态(AD转换-模拟量转换为数字量)施密特触发器为截止状态通过模拟输入通道输入到CPUIO口外部电压为模拟量(电压形式非电平形式),作为模拟输入范围一般为0~3.3V常见应用通过单片机引脚测量外部电压值5.GPIO输出工作模式1-开漏输出模式1,CPU写入位设置/清楚寄存器BSRR,映射到输出数据寄存器ODR2,联通到输出控制电路(也就是ODR的电平)3,ODR电平通过输出控制电路进入N-MOS管ODR输出1:N-MOS截止,IO端口电平不会由ODR输出决定,而由外部上拉/下拉决定在输出状态下,输出的电平可以被读取,数据存入输入数据寄存器,由CPU读取,实现CPU读取输出电平所以,当N-MOS截止时,如果读取到输出电平为1,不一定是我们输出的1,有可能是外部上拉产生的1ODR输出0:N-MOS开启,IO端口电平被N-MOS管拉倒VSS,使IO输出低电平此时输出的低电平同样可以被CPU读取到常见应用普通开漏输出模式一般应用在电平不匹配的场合如需要输出5V的高电平就需要在外部一个上拉电阻电源为5V把GPIO设置为开漏模式当输出高阻态时由上拉电阻和电源向外输出5V电平。6.GPIO输出工作模式2-开漏复用输出模式与开漏输出模式唯一的区别在于输出控制电路之前电平的来源开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的开漏推挽输出模式的输出电平是由复用功能外设输出决定的其他与开漏输出模式相似:控制电路输出为1:N-MOS截止,IO口电平由外部上拉/下拉决定控制电路输出为0:N-MOS开启,IO口输出低电平7.GPIO输出工作模式3-推挽输出模式与开漏输出相比较:输出控制寄存器部分相同输出驱动器部分加入了P-MOS管部分当输出控制电路输出1时:P-MOS管导通N-MOS管截止,被上拉到高电平,IO口输出为高电平1当输出控制电路输出0时:P-MOS管截止N-MOS管导通,被下拉到低电平,IO口输出为低电平0同时IO口输出的电平可以通过输入电路读取8.GPIO输出工作模式4-复用推挽输出模式与推挽输出模式唯一的区别在于输出控制电路之前电平的来源开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的开漏推挽输出模式的输出电平是由复用功能外设输出决定的推挽输出Push-Pull Output原理推挽输出是一种常见的输出驱动方式由两个MOSFET组成一个与电源相连P沟道MOSFET一个与地相连N沟道MOSFET。在任意时刻只有一个MOSFET是导通的。通过控制这两个MOSFET的开关可以输出高电平连接到电源或低电平连接到地。特点双向驱动能够输出高电平和低电平驱动能力强。速度快由于两个MOSFET的快速切换推挽输出响应速度快适用于高速信号。能耗低当输出稳定在高电平或低电平时只有一个MOSFET导通能耗较低。应用推挽输出广泛应用于数字信号输出如控制LED、驱动数字电路输入、通信接口等。开漏输出Open-Drain Output原理开漏输出是一种使用单个N沟道MOSFET的输出方式。当MOSFET导通时引脚连接到地当MOSFET关闭时引脚处于高阻状态浮空。为了输出高电平需要外部上拉电阻将引脚拉到电源电压。特点单向驱动只能主动拉低电平无法主动输出高电平。高电平依赖外部上拉电阻。线与功能多个开漏输出可以连接到同一条线上实现“线与”逻辑即多个开漏引脚的并联线只要有一个拉低线就为低电平。灵活性高可以用于不同电压等级的电路之间的接口通过选择适当的上拉电阻可以适配不同的逻辑电平。应用开漏输出常用于I2C总线、按键输入、多个设备共享一条数据线的场合如中断信号、电平转换电路等。对比总结推挽输出可以主动输出高电平和低电平适用于需要强驱动能力和高速响应的场合。开漏输出只能主动拉低电平高电平依赖外部上拉电阻适用于需要“线与”逻辑或不同电压等级电路连接的场合。GPIO应用总结1、上拉输入、下拉输入可以用来检测外部信号例如按键等2、浮空输入模式由于输入阻抗较大一般把这种模式用于标准通信协议的 I2C、USART 的接收端3、普通推挽输出模式一般应用在输出电平为 0 和 3.3V 的场合。而普通开漏输出模式一般应用在电平不匹配的场合如需要输出 5V 的高电平就需要在外部一个上拉电阻电源为 5V把 GPIO 设置为开漏模式当输出高阻态时由上拉电阻和电源向外输出 5V 电平。4、对于相应的复用模式复用输出来源片上外设则是根据 GPIO 的复用功能来选择如 GPIO 的引脚用作串口的输出USART/SPI/CAN则使用复用推挽输出模式。如果用在 I2C、SMBUS 这些需要线与功能的复用场合就使用复用开漏模式。5、在使用任何一种开漏模式时都需要接上拉电阻。5. STM32最小系统前面已经介绍了STM32芯片需要芯片工作起来还需要外围电路这部分电路和芯片一起称作为STM32最小系统。实物设计普中精灵1开发板为例STM32 最小系统由以下几部分组成1晶振电路2复位电路3电源电路5.1. 晶振电路由于单片机正常工作需要一个时钟对于 STM32 这种高级单片机来说其内部自带高速时钟/低速时钟源。但通常我们不使用内部时钟源而是在单片机主晶振引脚上外接一个晶振STM32F103C8T6 芯片的主晶振管脚在 5、6 脚位至于需要多大晶振这就取决于你所使用的单片机我们使用的是STM32F103C8T6其时钟频率可在 0-72MHZ 上运行一般情况下我们建议选择 8MHz适合 STM32 内部其他外设时钟的计算。若直接将此晶振接入单片机晶振引脚会发现系统工作不稳定这是因为晶振起振的一瞬间会产生一些电感为了消除这个电感所带来的干扰可以在此晶振两端分别加上一个电容电容的选取需要无极性的另一端需要共地。根据选取的晶振大小决定电容值通常电容可在10-33PF 值范围内选取。我们使用的是 22PF 电容。这样一来就构成了晶振电路。只有保证晶振电路稳定单片机才能继续工作。其电路如下所示STM32 芯片上还有一个外设需要晶振它是 RTC这个在后面章节实验我们会专门介绍这里先不用管它。要让 RTC 工作通常外接一个 32.768KHz 的晶振。5.2. 复位电路前面我们已经将晶振电路搭建完成我们知道晶振犹如人的心脏需要无时无刻给单片机提供运行周期。但即使时钟周期在不停的运行系统也有可能会出现崩溃或者瘫痪状态。这就好比人会生病一样人一生病就得看医生服用医生开的药后重新获得正常状态。那么单片机呢它是如何获取重生的这就需要设计一个复位电路来实现此功能。我们知道 STM32 引脚中有一个 NRST 复位引脚而 STM32 是低电平复位所以需要让这个引脚保持一段时间低电平就可以。要实现此功能通常有两种方式一种是通过按键进行手动复位还有一种是上电复位即电源开启后自动复位。手动复位是通过一个按键及电容电阻所组成利用按键的开关功能实现复位按键按下后 GND 直接接入到单片机 NRST 引脚松开后 GND断开NRST 被电阻拉为高电平。这一合一开就实现了手动复位。而自动复位主要是利用 RC 充放电功能电源开启由于电容隔直GND 直接进入 NRST然后电容开始慢慢充电直到充电完成此时 NRST 被电阻拉为高电平。这样就起到上电复位的效果。这里我们采用手动复位。不到系统崩溃我们几乎不会操作复位。复位电路如下图所示5.3. 电源电路任何电子器件都需要有一个合适的电源进行供电这就好比人要吃饭一样没有电源系统是不会工作的。STM32 的工作电压是 1.8-3.3V 范围通常我们使用 3.3V 直流。将电源接入到芯片电源引脚即可。核心板电源电路如下图所示核心板上使用一个 USB 接口输入 5V 直流经过 3.3V 稳压芯片输出直流 3.3V给核心板上整个系统。同时核心板供电后与底板连接也可提供 5V 和 3.3V 给底板工作。底板电源电路如下图所示
阿姆智创15.6寸工控触摸一体机,赋能工业自动化的硬核终端,源头工厂支持ODM定制 在工业自动化浪潮席卷制造业的当下,工控一体机作为产线控制与数据交互的重要终端,其性能、稳定性与适配性影响着自动化设备的运行效率。阿姆智创15.6寸工控触摸一体机PPC-1563,以强悍的硬件性能、工业级的环境适配性、丰富的接口配置… 2026/7/7 8:46:50
并发编程笔记1 上下文切换即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的࿰… 2026/7/4 7:55:58
工业视觉踩坑实录(三):工业视觉误检太多?我用4个工程技巧把误检率降到5% 光流法进阶:如何过滤误检与局部干扰关于作者 我接触视觉整整 10 年。 机器视觉、烟草、煤矿等行业都有深度开发经验。从硬件选型、算法开发、模型训练,到上位机开发及部署,都在一线磨过。 之前是多家公司人工智能团队的技术负责人。现在自己创… 2026/5/17 11:04:33
【OpenAI认证工程师亲授】:免费用户如何用Prompt工程+会话重置+上下文压缩,突破90%的生成长度与逻辑深度限制 更多请点击: https://codechina.net 第一章:ChatGPT免费用户的核心功能限制全景图 ChatGPT 免费用户(即未订阅 ChatGPT Plus 的用户)在享受强大对话能力的同时,面临多项明确的功能边界。这些限制并非隐性策略&#x… 2026/7/11 8:47:49
解决UE4 4.25.1在Win7上CreateDXGIFactory2缺失的兼容性问题 1. 项目概述与问题背景 如果你还在用Windows 7系统做UE4开发,尤其是在升级到4.25.1版本后,大概率会碰到一个让人头疼的弹窗:“无法定位程序输入点CreateDXGIFactory2于动态链接库dxgi.dll上”。这可不是个小问题,它直接导致引擎编… 2026/7/11 8:47:49
戴尔G15终极散热解决方案:告别AWCC,拥抱开源轻量神器 戴尔G15终极散热解决方案:告别AWCC,拥抱开源轻量神器 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否厌倦了戴尔G15笔记本自带的… 2026/7/11 8:45:48
固定资产管理软件是什么?从功能到价值全文讲解 很多企业发展到一定规模,都会陷入同一个资产管理困境:公司设备、办公电脑、家具、厂房设备一大堆,账本上有记录,仓库里找不到、在用的对不上、报废的没注销。年底全员熬夜盘点、财务对账对到崩溃、闲置资产堆积浪费、资产流失无从… 2026/7/11 8:45:48
ChatGPT语音对话无法启动?97.3%的失败源于这4个隐藏配置项——工程师级排查清单(含终端日志诊断命令) 更多请点击: https://codechina.net 第一章:ChatGPT语音模式怎么开启 ChatGPT 官方 Web 端与移动 App(iOS/Android)已逐步支持语音输入与语音播报功能,但该能力依赖于平台版本、设备权限及地区可用性,并非… 2026/7/11 8:43:47
Unity Netcode局域网游戏同步优化实战:从卡顿到丝滑的60Hz竞技体验 1. 项目概述:从“卡顿”到“丝滑”的局域网游戏优化之路 做过多人在线游戏开发的同行,尤其是基于Unity的,大概都经历过这个阶段:在编辑器里跑得飞起,一到局域网联机测试,角色就开始“瞬移”、“鬼畜”&… 2026/7/11 8:41:47
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08