本文前半部分为转载,后半部分为原创。

所使用软件版本为:Keil MDK4.12

单片机型号为:STM32F103C8T6

STM32第一个demo

1.建立文件夹

GPIO_TEST存放整个工程项目,在该项目文件夹下建立子文件夹存放不同类别的文件。

Obj:存放工程文件

Out:存放编译输出文件

Sorce:存放源代码文件


2.新建工程

打开KEIL3,这个时候显示的应该是上次使用过的工程。


在其中新建工程,把该工程存放在刚刚建立的Obj子文件夹下。



点击保存后弹出选择器件窗口,选择选择使用器件型号。


点击确定后弹出:


这个时候选择“是”,工程建立成功。


3.工程管理

这项对于项目的运行没有必要性,只是为了方便项目的管理。

在工程上右键,选择


弹出如下工程文件管理窗口,在此处可以添加Lib和Source。


经过操作,建立如下文件夹有备使用,这个可以根据个人编程习惯处理。


4.编写代码

新建源文件,保存在Sorce子文件夹下,注意文件名为gpio_test.c,一定要有C后缀。



把该文件添加到工程。


编写代码。

#include "stm32f10x_lib.h"

GPIO_InitTypeDef GPIO_InitStructure;

//LED端口初始化
void LED_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;			 
  	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  	GPIO_Init(GPIOC, &GPIO_InitStructure);
}

void Delay(vu32 nCount)
{
  for(; nCount != 0; nCount--);
}

main()			                              //内部8M RC时钟 ,无倍频
{
	
	LED_Init();
	
	while(1)								  
	{
		Delay(0x8ffff);
		Delay(0x8ffff);
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);
		Delay(0x8ffff);
		Delay(0x8ffff);
		GPIO_SetBits(GPIOC, GPIO_Pin_13);
	}
}
注意:在这里用到了RCCGPIO的库函数,所以必须把这两个函数加入工程。



关于固件库函数在文件夹:C:\Keil\ARM\RV31\LIB\ST\STM32F10x

为了不在操作过程中避免改变KEIL文件夹下的库函数,可以固件函数库放到其他文件夹下,如:E:\jy\work\STM\WxlStm32\LAB\library

其中stm32f10x_lib.c文件是整个库的一些定义,是必须要的。

加入后的工程为:


这里,如果有的人觉得不知道使用了哪些库函数,不晓得添加哪些库文件进入工程,有个最简单的办法就是添加所有的固件库函数到工程,为了方便可以直接添加:C:\Keil\ARM\RV31\LIB\ST路径下的STM32F10xR.LIB文件进入工程。


之后进行编译和烧写。不过在编译和烧写前需要先进行软件设置。


软件设置

这些设置也可以在工程建立后马上进行。

打开选项窗口:


每一页的设置如下:












设置完这些后就可以编译并下载或调试程序了。




程序在这里已经能正常运行了,会看到单片机上PC13对应的LED灯闪烁。