2 新建工程步骤

2 新建工程步骤

0.建立工程文件夹

选择一个程序储存文件,新建一个2-1 STM32工程模板文件夹,在2-1 STM32工程模板文件夹新建一个Start,User,Library文件夹

1.Keil中新建工程,选择型号

打开keil5,project->new project->选择文件夹(2-1 STM32工程模板)->给工程取个名称(Project),点击保存,选择型号:STM32F103C8,点击ok

2.工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹

1)添加STM32的启动文件

打开固件库,…\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm,将这些文件复制下来,将复制下来的文件粘贴进2-1 STM32工程模板文件夹下的Start文件夹;

2)添加STM32的头文件和配置时钟文件

//STM32的外设寄存器描述文件,用来描述STM32有哪些寄存器和它对应的地址的
stm32f10x.h 		 

//用来配置时钟的,STM32主频72MHz,就是system文件里的函数配置的
system_stm32f10x.c	 
system_stm32f10x.h

将…\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的三个.c,.h文件也复制到Start文件夹下;

3)添加STM32的内核寄存器的描述文件

core_cm3.c
core_cm3.h

将…\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的文件也复制到Start文件夹下。

4)添加文件到工程

打开keil5,在Project树下,修改Source Group 1为Start,然后右键,选择Add Existing Files to Group ‘Start’,打开Start文件夹,将startup_stm32f10x_md.s启动文件添加进来,然后再将.c和.h文件都添加进来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nsBLLF2V-1680425617769)(32单片机.assets/image-20230402112701487.png)]

5)在工程选项中添加头文件路径

在keil5软件下,点击魔术棒按钮,在C/C++里,在Include Paths栏,然后点击右边三个点的按钮,点击新建,选中Start文件夹,将其路径添加进来,点击ok(一定要记得添加进来,不然后面运行程序可能会报错);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mspDbZzU-1680425617777)(32单片机.assets/1.png)]

6)在工程选项中添加main函数

将main函数就存放在在2-1 STM32工程模板文件夹下的User文件夹里面;然后在keil5软件下,在target 1下右键,点击Add Group,将组的名字改为User,然后在User右键,点击添加Add new …,选择C文件,名字叫main,路径选择User文件夹,点击Add。

在main.c文件下编辑:(文件最后一行必须要空行,要不然会报警告)

#include "stm32f10x.h"                  // Device header

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

然后点击编译看看会不会报错,理论上不会出错。.

7)调试

拿出STM32最小系统板用杜邦线与STLINK连接好,将usb口插上,发现stm32板上,一个灯频闪,一个灯常亮;

然后配置一下调试器,点击魔术棒按钮,选择debug,将调试器选择为ST-Link Debugger,点击setting,在Flash Download的这一项下,把Reset and Run 这一项勾上(勾上这一项,我们下载程序后会立马复位执行);

8)点灯(寄存器)

main:

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0X00000010; 
	GPIOC->CRH = 0X00300000;
	GPIOC->ODR = 0X00002000;   //常灭(低电平点亮,把2换成0就点亮)
	while (1)
	{
	
	}
}

9)添加库文件

将…\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src的文件全选,粘贴在Library文件夹下;

将…\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc的文件全选,粘贴在Library文件夹下;

回到软件,在target 1下右键,点击Add Group,将组的名字改为Library,然后在Library右键,选择Add Existing Files to Group ‘Library’,打开Library文件夹,将全部文件都添加进来;

打开…\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template,将下面三个文件复制下来,粘贴到工程的User目录下,然后回到软件,将添加进来的三个文件Add进来;

//用来配置库函数头文件的包涵关系的
stm32f10x_conf.h 

//用来存放中断函数的
stm32f10x_it.c
stm32f10x_it.h

3.工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹

打开魔术棒,在C/C++选项下的Define栏目粘贴USE_STDPERIPH_DRIVER;

然后在C/C++里,在Include Paths栏将User和Library也添加进来;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KF1ggL4h-1680425617778)(32单片机.assets/image-20230402153647630.png)]

然后编译运行,0错误,0警告

总结:

建立工程文件夹,Keil中新建工程,选择型号
工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹
工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里
工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹
工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

2.3 验证环节:点灯(库函数)

#include "stm32f10x.h"                  // Device header

int main(void)
{
	//step1:使能时钟(第一个参数,使用外设时钟;第二个参数,选择外设状态)
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	//定义一个结构体(GPIO模式,端口,速度)
	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;
	//step2:配置端口模式(第一个参数,选择哪个GPIO;第二个参数,参数的结构体)
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	//step3:设置高低电平进行点灯
	GPIO_SetBits(GPIOC, GPIO_Pin_13); 		 //高电平
//	GPIO_ResetBits(GPIOC, GPIO_Pin_13);		 //低电平(点亮)
	while (1)
	{
	
	}
}

点灯完毕~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值