新建一个STM32的工程

一、SMT32开发方式

1、基于寄存器的方式:和51单片机开发方式一样,是用程序直接配置寄存器,来达到我们想要的功能,这种方式最底层、最直接、效率会更高一些,但是STM32的结构复杂、寄存器太多,所以不推荐基于寄存器的方式

2、基于标准库(库函数的方式):使用ST官网提供的封装好的函数,通过调用这些函数间接地配置寄存器,ST对寄存器封装的比较好,所以这种方式既能满足对寄存器的配置,对开发人员也比较友好,有利于提高开发效率

3、基于HAL库的方式:可以用图形化界面快速配置STM32,这个比较适合快速上手STM32的情况,但是这种方式隐藏了底层逻辑

二、基于库函数的方式

1、需要准备一个STM32库函数的压缩包

2、新建一个基于标准库的工程

建立一个存放工程的文件夹,把所有32个工程都放在里面

打开keil5软件,选择【project】=>【New uVision Project】

 

 

弹出一个keil软件新建工程小助手,帮助我们快速新建工程,暂时不用这个小助手

3、添加工程的必要文件

STM32是内核和内核外围的设备组成,这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以还需要添加一个内核寄存器的描述文件

工程必要文件就复制完成了

 4、将复制的必要文件添加到工程里

 首先添加一下启动文件,这个启动文件有很多分类,我们只能添加其中一个

 

选择md后缀是因为我们选择的是STM32F103,中容量产品

 5、在工程选项里添加上这个文件夹的头文件路径,不然软件找不到.h文件

6、新建一个main函数

在工程文件夹下,新建一个User文件夹,main函数就放在这个文件夹里

keil里,在Target这里右键,点击添加组

在main.c里,右键插入头文件,选择stm32发0x.h

写一个main函数(main函数是一个int型返回值,void参数的函数)

这个工程目前还没有添加STM32的库函数,所以现在还是一个基于寄存器开发的工程

三、通过配置寄存器完成点灯的操作

1、调节字体大小

 选择UTF-8编码格式,防止中文乱码的问题

 2、拿出STM32的最小系统板、STLINK和四根母对母的杜邦线

按照插针边上的标识,把3.3V、SWDIO、SWCLK、GND对应连接好,并将STLINK插在电脑上

插上电源后,这个板子上的电源灯应该会常亮,另一个连接在PC13口上的灯默认应该是闪烁状态,这是芯片里的一个测试程序

3、在keil5中,配置调试器

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR=0x00000010;
	GPIOC->CRH=0x00300000;
	GPIOC->ODR=0x00002000;	//全为0时PC13的灯亮起,ODR为2000时PC13灯灭了
	while	(1)
	{
		
	}
}

 四、为工程添加库函数

1、打开工程文件夹,新建一个【Library】文件夹,用来存放库函数

 2、keil里,在Target这里右键,点击添加组

打开Library,Ctrl+A选择全部文件,选择【Add】

 3、添加库函数头文件包含关系的相关文件

4、宏定义

头文件右键,打开文件

滑到文件最下面,看到条件编译语句,如果你定义了USE_STDPERIPH_DRIVER(使用标准外设)这个字符串,下面这个include conf.h语句才有效

 在Define栏目粘贴这个字符串,这样才能包含标注外设库,以及头文件路径User和Library路径也都添加上

 将Library向上调一下,将不用更改的文件夹放在最上面

 五、用库函数实现点灯的操作

不自动提醒的按照以下操作(或者按一下快捷键Ctrl+Alt+空格

 点击函数,右键跳到函数定义

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);	//GPIOC的外设时钟就配置好了
	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_SetBits(GPIOC,GPIO_Pin_13);	//将PC13号口置为高电平
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);	//将PC13号口置为低电平
	while	(1)
	{
		
	}
}

六、总结

1、建立工程文件夹,Keil中新建工程,选择型号

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

这一步是为了添加工程文件准备的,建文件夹是因为文件比较多需要分类管理一下,需要用的文件夹一定要复制到工程文件夹里面来

3、工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里

在keil里方便管理文件,因为keil没法直接添加文件夹,所以要重复一下,在keil里建立分组,然后添加文件,这个添加文件是把所有的.h文件和.c文件都添加进来了,因为.h文件是不参与编译的,所以很多工程都不添加.h文件,但是添加.h文件比较方便经常打开看

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

因为Start、Library、User文件夹是自己建立的,keil软件它并不知道,所以要用自己文件夹里面的.h文件,就必须声明一下这个路径

5、工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER

使用库函数的条件编译,使用库函数就必须定义这个,另外其他工程在这里还声明了一个STM32F10X_MD的字符串,但是keil5新建工程后自动就声明好了,不需要额外声明了

6、工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

这个就是选择调试器来进行下载的选项了,用STLINK就选择STLINK的那一项即可

工程框架

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值