STM32-新建工程(标准库)

目录

STM32F10x新建工程(标准库)

移植文件夹

新建工程

添加启动文件和必需文件

在工程中加载新添加的文件

在工程中添加文件路径

在工程中添加main函数

添加lib库

添加必需文件

添加宏定义

点亮LED(标准库)


STM32F10x新建工程(标准库)

移植文件夹

移植文件夹为STM32F10x_StdPeriph_Lib_V3.5.0。

新建工程

新建一个文件夹,存放工程。以桌面/STM32Program为例。

打开keil5--Project--New uVision Project--选择桌面的STM32Program文件夹--起工程名字:如STM32Program--保存。

keil5弹出选择芯片型号的页面--选择,如STM32F103VET6等。然后弹出芯片包管理页面,可以直接关闭。

到此,工程创建完毕。但该工程还无法使用,因为缺少了启动文件。

添加启动文件和必需文件

在移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm下选择复制对应的启动文件,如startup_stm32f10x_md.s

在新建的工程目录STM32Program下新建start文件夹,粘贴刚刚复制的启动文件到start文件夹中。

回到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x目录下,复制stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h

在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。

来到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport目录下,复制内核文件core_cm3.c、core_cm3.h

在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。

在工程中加载新添加的文件

keil5上打开STM32Program工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。

双击左键默认的Groups下的Source Groups 1,修改名称为start。

然后在start的组下,添加新文件。依次添加:.s启动文件,core_cm3的源文件和头文件,除.s外的其余文件。

然后点击Manage Project Items的OK按钮即可。

在工程中添加文件路径

keil5上打开STM32Program工程,点击小控件:Options for Target 'xx'(控件图标为魔术棒)。

魔术棒的C/C++(AC6)选项-Include Paths,可看到包含路径框的右侧有个省略号的按钮,点击。

然后包含start文件夹路径,点击OK。

在工程中添加main函数

在工程目录下添加user文件夹,keil5打开工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。

添加新建组:user。点击OK。在keil5的工程中右击user文件夹,Add New Item to Group 'user',选择c文件,名称为mian,路径选择刚才创建的user文件夹。点击Add。

在mian.c中右键添加头文件,Insert '#include' file--stm32f10x.h。

然后写main函数。选择编译。

注意:user头文件路径别忘记添加。

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

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

编译后发现有很多错误,那是因为工程中keil5选用的是编译器6。

点击小控件:Options for Target 'xx'(控件图标为魔术棒)。在魔术棒的Target选项页中找到ARM Compiler,选择Use default compiler version 5。

再次编译,此时发现没有错误了。此时可以直接寄存器开发了,但如果需要标准库开发,还需要一些文件。

添加lib库

在STM32Program工程中新建lib文件夹。

然后打开STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver,该目录下有src文件夹和inc文件夹。把src文件夹和inc文件夹的所有文件复制到STM32Program工程的lib文件夹。

然后在keil5的工程中新建lib组加载新添加的文件和添加头文件路径。

添加必需文件

在STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下复制stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h文件。

粘贴到STM32Program工程的user文件夹。

然后在keil5的工程中user组加载新添加的文件和添加头文件路径。

添加宏定义

打开stm32f10x.h,光标去到文件最末尾,找到USE_STDPERIPH_DRIVER并复制。

然后点击魔术棒,来到C/C++选项页,在Define中粘贴USE_STDPERIPH_DRIVER。

点击OK。点击编译。没有错误了。此时已经创建好了。

点亮LED(标准库)

如LED为PC13。低电平点亮LED。

cpp 复制代码
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	
	GPIO_InitStruct.GPIO_Pin 	= GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Mode 	= GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed	= GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStruct);
	
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);
	
	while(1)
	{
	
	}
}
相关推荐
Messy create5 小时前
【BMS-AFE-温度检测】
stm32·单片机·能源
桃蹊、6 小时前
串口/网络透传实战:FreeRTOS 多任务架构与连接池设计
stm32·物联网·wifi·freertos
新晨单片机设计8 小时前
S001A-基于STM32单片机超声波视力保护仪【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
星河单片机8 小时前
STM32驱动Y01-3IN1空气质量模块+OLED显示完整教程
stm32·单片机·嵌入式硬件·空气质量·甲醛检测·二氧化碳检测·tvoc检测
玩转单片机与嵌入式8 小时前
深入浅出TinyML 21:INT8量化改变了模型中的哪些数据?
stm32·深度学习·tinyml
别催小唐敲代码8 小时前
stm32_mpu6050_滤波教程
stm32·单片机·嵌入式硬件
一条破秋裤9 小时前
STM32 学习笔记:GPIO 输出实验——LED 闪烁、流水灯与蜂鸣器
笔记·stm32·学习
一条破秋裤10 小时前
STM32 学习笔记:GPIO 输出原理与硬件设计
笔记·stm32·学习
单片机仿真设计11 小时前
【proteus仿真设计】基于 STM32 单片机火灾监测报警系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
一条破秋裤11 小时前
STM32 学习笔记:OLED 调试工具与 Keil 在线调试
笔记·stm32·学习