STM32新建工程

STM32使用前须知

因为STM32单片机种类太多了,使用时需要支持包

点击这里可进入官网,下载支持包


标准库添加及其编译器的准备工作

新建工程后,选择STM32F103C8,但并不能直接使用

STM32必要文件

STM32启动文件

STM32外设寄存器和配置时钟文件

内核寄存器的描述文件

因为STM32是内核和外围设备组成的,但是内核寄存器和外围设备的描述文件不是一起的,所以要增加一次内核寄存器的描述文件

在工程目录添加启动文件

将STM32必要文件添加到工程目录里,创建一个新文件,命名为Start

添加这个文件夹的头文件路径,否则无法找到

编译后,通过ST-LINK下载到STM32单片机上

在工程目录里添加库函数

在工程目录里新建文件夹,命名为Library

STM32库函数文件

在工程目录添加库函数辅助文件

库函数不能直接使用,还需添加文件

这三个文件添加到User文件(主函数在里面)里面

编译器准备工作

将所有的文件添加工程还不够,还需要一个条件编译

最后还需要添加Stare、User、Library文件夹的路径


点灯

在添加完标准标准库,将文件加入工程后,就可以右键打开函数的定义,根据注释写入参数

第一步

RCC开启GPIO的时钟,右键跳转看参数定义

第二步

使用GPIO_Init函数初始化GPIO

void GPIO_DeInit 调用这个函数之后,所指定的GPIO外设就会被复位

void GPIO_AFIODeInit 调用这个函数之后,可以复位AFIO外设

void GPIO_Init 这个函数作用是用结构体的参数来初始化GPIO口,需要先定义一个结构体变量,然后再给结构体赋值,最后调用这个函数,这个函数就会自动读取结构体的值,然后自动把外设的各个参数配置好,一般初始化外设都是使用这个Init函数完成

void GPIO_StructInit 这个函数可以把结构体变量赋一个默认值

GPIO读取函数

uint8_t GPIO_ReadInputDataBit

uint16_t GPIO_ReadInputData

uint8_t GPIO_ReadOutputDataBit

uint16_t GPIO_ReadOutputData

GPIO写入函数

void GPIO_SetBits

void GPIO_ResetBits

void GPIO_WriteBit

void GPIO_Write

第三步

使用输出或输入的函数控制GPIO口

最终的代码

cs 复制代码
#include "stm32f10x.h"                  // Device header

int main(void)
{
	/*开启时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	//开启GPIOC的时钟
															//使用各个外设前必须开启时钟,否则对外设的操作无效
	
	/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;					//定义结构体变量
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;				//GPIO引脚,赋值为第13号引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
	
	GPIO_Init(GPIOC, &GPIO_InitStructure);					//将赋值后的构体变量传递给GPIO_Init函数
															//函数内部会自动根据结构体的参数配置相应寄存器
															//实现GPIOC的初始化
	
	/*设置GPIO引脚的高低电平*/
	/*若不设置GPIO引脚的电平,则在GPIO初始化为推挽输出后,指定引脚默认输出低电平*/
	GPIO_SetBits(GPIOC, GPIO_Pin_13);						//将PC13引脚设置为高电平
	//GPIO_ResetBits(GPIOC, GPIO_Pin_13);						//将PC13引脚设置为低电平
	
	while (1)
	{
		
	}
}

头文件找到函数->右键跳转到定义->Ctrl+F查找函数参数

型号分类及缩写

新建工程步骤

工程架构

相关推荐
ysu_03147 小时前
TinyML 模型部署:从 Edge Impulse 到 STM32F103
驱动开发·stm32·嵌入式硬件·mcu·硬件架构·硬件工程·dsp开发
糖糖单片机设计14 小时前
基于STM32的电子密码锁设计与实现(矩阵键盘+防拆检测+GSM远程报警)
人工智能·stm32·单片机·嵌入式硬件
充哥单片机设计15 小时前
【STM32开源项目】智能家电控制系统
stm32·单片机·嵌入式硬件·毕业设计·智能家电控制·家电控制
捷瑞电子工坊19 小时前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
新晨单片机设计20 小时前
S004R-基于STM32单片机智能门禁系统(密码、指纹、人脸、刷卡、蓝牙)【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus
桀人20 小时前
MCU系统架构——总线——统一编址
stm32·单片机·嵌入式硬件
可乐鸡翅好好吃21 小时前
通讯协议--硬件模拟和软件模拟
stm32·嵌入式硬件
Zw-awa21 小时前
STM32F103C8T6 最小系统板:从型号差异到启动方式
stm32
LCG元1 天前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
染予1 天前
代码中相关C语言知识点总结
stm32