STM32模板工程的创建

一、创建工程

1.创建项目

在Keil uVision5中点击Projiect,然后点击New uVision Project,在弹出的窗口中创建工程并选择工程位置,然后在弹出的窗口中选择STM32F103C8(对应的硬件为STM32F103C8T6)

2.添加工程必要文件

在项目工程中创建Start文件夹用于存放工程必要文件

必要文件包含:启动文件+外设寄存器、时钟文件+内核寄存器文件

然后在Keil uVision5中将Source Group 1的名称更改为Start,右键,选择添加已存在的文件到组里

然后在文件过滤器中选择All files

选择startup_stm32f10x_md.s        core_cm3.c        core_cm3.h        stm32f10x.h        system_stm32f10x.c        system_stm32f10x.h 加入,添加后会发现文件图标带了个小钥匙,表示这些为只读文件

最后需要在工程选项中添加上这个文件夹的头文件路径,打开魔术棒,选择c/c++,在Induce Paths中选择start文件夹的路径

3.创建main.c文件

新建文件夹User,用于存放main函数文件。在keil中右键Target,点击添加组,并改名为User,在User上右键添加新文件,选择C文件,命名为main。并修改路径到User文件夹。

在main.c中右键,选择插入头文件,并选择stm32f10x.h

完成后写入代码并编译完成工程创建。                 

#include "stm32f10x.h"                  // Device header

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

 注意,如果出现报错,如图,

解决方法:打开魔术棒,把v6版本更改为v5

如果还有1个警告,在output界面选勾Create HEX File

全部解决后项目创建完成,这个工程目前未添加stm32的库函数,还是一个基于寄存器开发的工程。

二、点灯

1.通过配置寄存器完成点灯

(1)接线

拿出STM32最小系统板,STLINK,四根母对母杜邦线,安装插针边上的标识,把3.3V、SWCLK、GND对应连接好,接好后把STLINK插入电脑,可以看到电源灯常亮,连接在PC13口上的灯默认闪烁

(2)配置调试器

点击魔术棒,选择Debug,选择ST-Link Debugger

然后点击setting,在Flash Download页面选勾Reset and Run,这样程序下载后会立刻复位执行

点击编译后没问题就点击LOAD下载到单片机。下载成功后PC13口上的灯就不再闪烁了。

(3)点灯

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;//使能GPIOC时钟
	GPIOC->CRH = 0x00300000;//配置PC13口的CNF为通用推挽输出模式,MOD为最大速度为50MHZ的输出模式
	GPIOC->ODR = 0x00000000;//端口输出数据寄存器,灯为低电平点亮,全是0为亮,0x00002000是灭
	while(1)
	{
		
	}
}

 将程序烧录进板子后,PC13口上的灯常亮。

2.通过库函数点灯

(1)添加库函数

在工程文件夹中创建Library文件夹用于存放库函数,将库函数文件复制进去

 和之前一样,在keil中右键Target,点击添加组,并改名为Library,然后再右键把刚刚复制的文件添加进去,但现在还不能使用,需要添加这三个文件到工程的User目录下,同样在keil将这三个文件加入User

 在stm32f10x.h中复制USE_STDPERIPH_DRIVER

 打开魔术棒的C/C++页面将其粘贴到Define一行,这样才能包含标准外设库,同时把User和Library的路径都添加上

(2)点灯

#include "stm32f10x.h"                  // Device header

int main(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能GPIOC时钟(使能不能放到配置之后)
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//通用推挽输出
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;//选择pc13引脚
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//配置最大速度为50MHZ的输出模式
	GPIO_Init(GPIOC,&GPIO_InitStruct);//配置端口模式
	//GPIO_SetBits(GPIOC,GPIO_Pin_13);//将PC13号口设置为高电平
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将PC13号口设置为低电平
	while(1)
	{
		
	}
}

 将程序烧录进板子后,PC13口上的灯常亮。

三、总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值