news 2026/6/20 11:50:14

STM32学习_新建工程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32学习_新建工程

STM32学习_新建工程

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

一、简介

STM32系列的特点

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

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

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

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

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

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

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

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

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

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

二、开发和新建工程

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

目前STM32的开发方式主导有

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

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

- 基于库函数的方式

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

- 新建工程

- 添加固件库文件
1、添加启动文件

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

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

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

回到软件,添加文件

2、创建 main 函数

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

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

#include"stm32f10x.h"// Device headerintmain(void){while(1){}}

三、终于可以点灯了

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

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

1、使用寄存器点灯

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

#include"stm32f10x.h"// Device headerintmain(void){RCC->APB2ENR=0x00000010;GPIOC->CRH=0x00300000;GPIOC->ODR=0x00000000;while(1){}}

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

2、使用库函数点灯

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

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

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

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

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

在软件中添加文件

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

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

#include"stm32f10x.h"// Device headerintmain(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){}}

写在最后

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 10:04:23

应用运维目录

应用运维目录一、写在前面二、应用分类ApacheMySQLJavaPythonDockerNginxMinIONacosZabbix一、写在前面 为了方便后面查找和更新,在这里列出跟应用有关的文档连接。 二、应用分类 Apache 1、安装教程 2、报错处理 MySQL 1、安装教程 CentOS7下安装MySql 2、…

作者头像 李华
网站建设 2026/6/15 14:27:12

UDP网络巩固知识基础题(2)

1. UDP协议工作在哪一层?A. 物理层 B. 数据链路层 C. 网络层 D. 传输层答案:D 解析: UDP(User Datagram Protocol)是传输层协议,与TCP同属传输层,提供无连接的数据传输服务。2. UDP协议的特点不…

作者头像 李华
网站建设 2026/6/17 18:34:20

【SSM戒烟网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案

摘要 随着互联网的高速发展,线上管理成为当代人们管理事物的重要手段之一;戒烟网站的开发也迫在眉睫。所以采用B/S模式, MySQL数据库以及通过java技术来开发此网站的目的是建立一个戒烟网站,这样可以有效地解决戒烟管理混乱的局面。本网站设计…

作者头像 李华
网站建设 2026/6/17 19:47:01

百度网盘直链解析工具:简单3步实现全速下载的完整教程

还在为百度网盘龟速下载而苦恼吗?每次看到几十KB的下载速度,是不是感觉回到了拨号上网的时代?这款百度网盘直链解析工具正是你需要的提速利器,它能帮你提取真实下载链接,让下载速度直接提升! 【免费下载链接…

作者头像 李华
网站建设 2026/6/17 18:38:10

构词与词根-2025年

对于相近构词 记忆起来很麻烦sector vector factor Hector 这是前缀的区别,主要还是看前缀词根;但是这里前缀似乎是单个字母;s刀 切,sector一节 部门;vector 向量; Hector h是上层的 恐吓前缀构词一般都是词根&#xf…

作者头像 李华