STM32仿真,低成本学习STM32 - 01-stm32df103c8t6最小系统的搭建

今天我们来学习STM32的最小系统的搭建,依旧选用的我们的STM32F103C8T6这款芯片,主页有实物的结果,进行led的闪烁,可以看一下

 1.电源电路

为芯片提供稳定、清洁的电源是系统稳定的基础。

  • 供电电压(VDD / VSS)

    • 数字电源:通常为3.3V。连接到芯片的VDD引脚和VSS

    • 模拟电源:如果使用ADC、DAC等模拟外设,需要为VDDA引脚提供干净的模拟电源,并将VSSA正确接地。通常通过磁珠或电感从数字电源隔离而来。

  • 退耦/滤波电容

    • 这是至关重要的。在每个VDDVSS引脚附近(尽可能靠近引脚),都需要放置一个100nF的陶瓷电容,用于滤除高频噪声。

    • 在电源入口处,通常还会放置一个10uF或更大的钽电容或电解电容,用于滤除低频噪声和稳定电压。

2. 时钟电路

为芯片提供时序基准。STM32具有内部时钟,但为了获得更高精度和稳定性,需要外部时钟。

  • 高速外部时钟

    • 作用:为系统主时钟提供高精度源,通常使用外部晶振。

    • 构成:一个8MHz(或其它频率,但8MHz最常用)的无源晶振,连接在OSC_INOSC_OUT引脚(即PH0PH1)之间。

    • 负载电容:每个晶振引脚到地需要连接两个10pF~22pF的负载电容,具体值需参考晶振数据手册。

  • 低速外部时钟

    • 作用:为实时时钟和看门狗等需要低功耗且精确计时的外设提供时钟源,可选但强烈推荐。

    • 构成:一个32.768kHz的晶振,连接在OSC32_INOSC32_OUT引脚上。

    • 负载电容:同样需要连接两个负载电容(通常为6~22pF)。

注意:在某些对成本或空间极其敏感的应用中,可以省略外部晶振,仅使用内部RC振荡器。但这会牺牲时钟精度。

3. 复位电路

用于在上电、断电或程序跑飞时,将MCU恢复到初始状态。

  • 构成:一个简单的RC电路或专用复位芯片。

  • 手动复位按钮:一个电阻和一个按键开关串联。

    • 通常做法NRST引脚通过一个10KΩ的上拉电阻接到3.3V,同时通过一个100nF的电容接地以实现上电复位。一个常开按键并联在电容两端,当按键按下时,NRST被拉低,触发复位

4. 下载调试接口

用于将程序烧录到芯片Flash中,并提供在线调试功能。

  • 标准JTAG 和 SWD

  • 最常用SWD,因为它只需要2根线(SWDIO, SWCLK)加上电源和地,占用引脚少。

  • 连接器:通常使用标准的4针或5针排针VCCSWDIOSWCLKGND, 可选的RESET)。

5.启动电路(BOOT)确定芯片的启动模式

首先我们还是先配置时钟,但是会有所不同,我先拿上节课的记录一下

开始配置芯片

首先选择要配置的芯片

等待他加载完

左上角搜索STM32F103C8,然后选择STM32F103C8T6这个内核,然后点击右上角的star project

然后来到这个页面

这里就模拟了我们真实的一个芯片和他的引脚分布,然后再左边我们进行系统设置

首先我们需要一个时钟,因为芯片必须要有时钟信号,才可以正常工作

我们先点击system,然后点击rcc,发现有两个选项,high是高速时钟,low是低速时钟,我们选高速时钟中的第三个选项,第三个选项的意思是我们选择外部晶振信号


————————————————

选择完之后发现PD0和PD1这两个引脚会变成绿色,也就是说f103c8t6这款芯片,外部时钟信号的引脚,只能通过PD0和PD1两个引脚接入

这次我们配置低速时钟信号,也设置为外部晶振控制,选择完之后发现PC14和PC15这两个引脚会变成绿色,也就是说f103c8t6这款芯片,高速时钟是通过PD0和PD1进行输入的,低速信号是通过PC14和PC15进行输入的

再次提醒如果路径有中文的话,会导致导出的keil文件缺少核心的文件

也就是APP这个文件夹里的文件

然后我们来进行仿真电源的搭建,首先我们知道STM32单片机供电是3.3V,在仿真中,他会自动提供3.3V的电压我们就不用搭建供电电路了

首先我们在工具栏找到终端模式

终端模式中有一个power和ground,这就是我们的gnd和vcc

这里我们选择power然后拿出来一个电源

如果放置的方向和你的不符,可以右键进行旋转

这里我们接入VDDA和VBAT

然后我们拿出来gnd

接在VSSA

接下来我们设置时钟电路,时钟电路我们分为高速时钟和低速时钟进行设置

高速时钟(HSE):提供STM32外设使用,课接4-16MHz的晶振,我们一般接入8MHz加上20pF的起振电容和1MΩ的反馈电阻。这里我们旋转8MHz因为方便分频。

低速时钟(LSE):精准定时,用于提供实时时钟,需要32.768KHz的晶振和12pF的起振电容

这些可以参考stm32f103c8t6的数据手册,这里我们是初级者,所以我们暂时只需要知道怎么连接就好,不用过于追究

根据stm32cube我们知道PD0和PD1是高速时钟现在我们来进行电路连接

首先我们先点击元件模式

然后点击这个p我们来进行一下搜索

搜索我们的晶振名字CRY STAL,点击第一个,然后点击确定,我们把它摆出来

为了方便我们布线,给他进行一个90°旋转

同样我们搜索CAP找到电容

进行放置,我们需要放置两个电容

同理我们搜索电阻进行放置,电阻搜索res

也是进行一下旋转

接下来对电阻,电容,晶振进行数值的修改,我们双击电阻,会有电阻属性,我们修改为1M

然后修改经侦为8Mhz

电容修改为22pF。

还需要让他们接地,所以我们拿出来一个GND。

然后我们进行线路连接,按照我们摆放的位置,依次进行连接,因为是不分正反的,所以依次连接就好

低速时钟信号非常精准,经常用于我们1Hz这样子的时钟信号,能够精确时间,在程序中通常用来写延时函数,延时毫秒,秒。实现时间相关的设定。

根据stm32cube我们可以看到

PC14和PC15是我们低速时钟的接口

由于他和我们高速时钟很像,所以我们可以按住鼠标左键,把这些全部圈起来,然后选择块复制

然后我们将第二个晶振修改为32.768KHz

然后将电容,修改为12pF。

最后我们进行连线,选择我们的PC14和PC15接口

接下来我们搭建复位电路,需要10kΩ的电阻,105的电容和一个开关。

105是电容的一个名字,代表着这个电容是10*10^5的电容,大小为1uF

复位的引脚是我们的NRST引脚

然后我们在元件库搜索BUTTON这是我们的开关,也就是按钮

在我们STM32中低电平是触发复位信号的,所以我们要让他为高电平,按下按扭为低电平

我们先拿出一个GND

我们能不能这样子接呢,答案理论上可以,但是实际上不行,因为会有波动,而且及其不稳定,来一个干扰就会恢复复位

我们拿出来一个电阻,把这个引脚设置为高电平,也就是上拉模式,让他一直高电平,尽量避免干扰信号。并且电阻还有一个限流作用,放置大电流进入烧毁芯片。

在拿出来一个电源

再拿出来一个电容,防止我们松开按键时候,端口立马变为高电平,给端口一个大脉冲,所以接入一个电容,进行滤除这个大脉冲。电容阻值我们上面计算过,为1uF。

然后我们进行线路连接

然后是启动电路,我们仿真中不涉及

1.主闪存存储器是执行程序

2.系统存储器是执行串口程序下载

3.内置SRAM是内置SRAM被选为启动区域

调试和下载电路,仿真也不涉及,实物才设计

分为1.SWD下载电路

        2.JTAG下载电路

        3.ISP下载电路(一般选择CH340芯片实现)

然后我们双击32单片机,然后把晶振改为8MHz因为我们引入了低速时钟

然后我们在器件库搜索LED,然后下拉,找到GREEN,放置一个。

我们还需要给他放置一个限流电阻,不然led会烧坏,实物中虽然不会烧坏,但是会非常刺眼。

然后加一个接地,让他导通

但是电阻不易过大200欧左右就行

然后我们找到上次编译的.hex文件把它导入到单片机中

然后点击左下角的开始仿真

发现我们的led可以正常点亮,那么就说明我们的最小系统已经搭建完成,下次就可以编写程序,进行程序的仿真了。

在仿真中红色表示高电平,蓝色表示低电平,我们来测试一下看看按钮是否正常

发现按下按钮之后,复位端口确实为低电平了,说明我们按钮可以正常工作。

可能会有人有疑问,为什么LED没有接在芯片里,因为我们是在仿真,所有的VCC和GND都是一个网络,都是连载一起的,所以不需要直接接入我们单片机里,后续进行仿真,基本上都是添加网络标签然后通过网络标签进行连接。

这些就是我STM32单片机最小系统的学习笔记,仅供参考,欢迎大佬指点。后面我还会记录实物的操作,也会记录,欢迎大家交流指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值