STM32学习_新建工程

STM32学习

STM32 是意法半导体推出的32位ARM Cortex-M内核微控制器系列,具有高性能、低功耗、可靠性强等特点,广泛应用于工业控制、智能家居、汽车电子、医疗设备等领域。

一、简介

STM32系列的特点

高性能:STM32系列单片机采用了ARM Cortex-M内核,具有出色的处理性能和运行速度。此外,它们还具有较大的Flash存储器和SRAM存储器,可以轻松处理复杂的应用程序。

丰富的外设:STM32系列单片机具有丰富的外设,包括多个定时器、计数器、PWM输出、ADC、DAC、通信接口等。这些外设可以帮助开发人员实现各种不同的应用需求。

低功耗:STM32系列单片机采用了先进的低功耗技术,可以在不降低性能的情况下降低功耗。这使得它们非常适合需要长时间运行、或者需要在电池供电的设备中使用。

易于开发:STM32提供了丰富的软件和硬件工具,以帮助开发者快速开发嵌入式应用程序。例如,STM32CubeIDE是一个集成开发环境(IDE),包括调试器和代码生成器,用于开发基于STM32的嵌入式系统。

image-20251213194226267

image-20251213195148035

image-20251213195234432

image-20251213195416656

image-20251213200834109

image-20251213201034775

image-20251213201327686

image-20251213201850991

image-20251213203446677

刚刚烧了4个 LED 灯珠,我把 ST_Link 连接到绿联扩展坞上,再把 ST_Link 输出的3.3V电压引到面包板,在正负极上插上 LED 灯珠,没想到刚接上就烧了。

在之前我都是把 ST_Link 插到电脑 USB ,也是直接插 LDE 灯珠,没出现过烧毁的情况,现在估计是绿联输出的电压应该是 高于5V 的。手头也没有万用表,测不了电压。

现在重新把 ST_Link 插到电脑 USB 上了,恢复正常了。

image-20251213204149123

哈哈,和我观察的情况一样,红色烧的最快,其次是绿色,蓝色和白色没试过。

现在我在 ST_Link 连接电脑 USB 的情况下,再次将 LED 灯珠(红色)插到面包板正负极上,这次正常点亮。可能原因是电脑 USB 输出的电压较低。

LED灯珠电压参数详解:一颗LED灯珠通常需要多少伏电压?-尤集电子网

image-20251213205900502

二、开发和新建工程

STM32的工程结构较复杂,需要用到很多资料,之后的代码也都是需要建立在工程结构上的。所以在学习后续内容之前,需要学习如何新建工程

目前STM32的开发方式主导有

  1. 基于寄存器的方式
  2. 基于标准库(也就是库函数)的方式
  3. 基于HAL库的方式

- 基于寄存器的方式

和我们51单片机的开发方式一样,是用程序直接配置寄存器,来达到我们想要的功能。此种方法最底层、最直接、效率高。有助于理解底层原理,这里推荐 使用寄存器方式 深入学习。

- 基于库函数的方式

是使用ST官方提供的封装好的函数,经过调用这些函数来间接地配置寄存器。由于ST对寄存器封装地比较好,因而此种方式既能满足对寄存器地配置,对开发人员也比较友好,有利于提高开发效率。

- 新建工程

image-20251213212544043

image-20251213212732755

image-20251213212848519

image-20251213212916808

- 添加固件库文件

1、添加启动文件

image-20251213213410056

文件路径:C:\Users\Admin\Desktop\文件\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

image-20251213213917010

image-20251213214146755

文件路径:C:\Users\Admin\Desktop\文件\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

image-20251213214351563

文件路径:C:\Users\Admin\Desktop\文件\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

回到软件,添加文件

image-20251213214752468

image-20251213215051409

image-20251213214605095

image-20251213215526257

2、创建 main 函数

image-20251213215846398

在工程文件中,添加 User 文件夹

image-20251213220100324

image-20251213215810542

创建 main.c 文件,写入代码验证工程是否创建成功

#include "stm32f10x.h"                  // Device header

int main(void)
{
	
	while(1)
	{
		
	}
}

image-20251213220527005

三、终于可以点灯了

创建工程比较枯燥,终于来到愉快的点灯环节了。

可能是我比较啰嗦,工程的创建现在回头看也是挺简单的。

1、使用寄存器点灯

image-20251213220958357

image-20251213221358857

编写 main.c 内容,实现点灯操作:

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x00300000;
	GPIOC->ODR = 0x00000000;
	
	while(1)
	{
		
	}
}

实验现象:STM32 最小系统板 绿色LED灯 被点亮

2、使用库函数点灯

在工程文件下新建文件夹 Library

image-20251213222254639

将固件库 Libraries\STM32F10x_StdPeriph_Driver\src 中的所有文件复制到 Library 中

image-20251213222605813

文件路径:C:\Users\Admin\Desktop\文件\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

将固件库 Libraries\STM32F10x_StdPeriph_Driver\inc 中的所有文件复制到 Library 中

image-20251213222906160

文件路径:C:\Users\Admin\Desktop\文件\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc

在软件中添加文件

image-20251213223029590

image-20251213223151988

现在还不能直接使用 库函数

image-20251213223416938

image-20251213223539194

image-20251213223813521

image-20251213224055431

image-20251213224311486

这样基于库函数的工程就建好了,下面开始编写代码:

image-20251213230436630

#include "stm32f10x.h"                  // Device header

int main(void)
{
	// 配置 GPIOC 的外设时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	// 定义结构体,配置端口模式
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	
	// 设置 GPIO_Pin_13 高电平,熄灭
	//GPIO_SetBits(GPIOC,GPIO_Pin_13);
	// 设置 GPIO_Pin_13 低电平,点灯
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	while(1)
	{
		
	}
}

image-20251213231624023

image-20251213231354734

image-20251213231537003

image-20251213231750840

写在最后

第一个工程比较麻烦,后面就会简单很多

posted @ 2025-12-13 23:24  Q&25  阅读(1)  评论(0)    收藏  举报