本文前半部分为转载,后半部分为原创。
所使用软件版本为:Keil MDK4.12
单片机型号为:STM32F103C8T6
STM32第一个demo
1.建立文件夹
GPIO_TEST存放整个工程项目,在该项目文件夹下建立子文件夹存放不同类别的文件。
Obj:存放工程文件
Out:存放编译输出文件
Sorce:存放源代码文件
2.新建工程
打开KEIL3,这个时候显示的应该是上次使用过的工程。
在其中新建工程,把该工程存放在刚刚建立的Obj子文件夹下。
点击保存后弹出选择器件窗口,选择选择使用器件型号。
点击确定后弹出:
这个时候选择“是”,工程建立成功。
这项对于项目的运行没有必要性,只是为了方便项目的管理。
在工程上右键,选择
弹出如下工程文件管理窗口,在此处可以添加Lib和Source。
经过操作,建立如下文件夹有备使用,这个可以根据个人编程习惯处理。
新建源文件,保存在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); } }注意:在这里用到了RCC和GPIO的库函数,所以必须把这两个函数加入工程。
关于固件库函数在文件夹:C:KeilARMRV31LIBSTSTM32F10x
为了不在操作过程中避免改变KEIL文件夹下的库函数,可以固件函数库放到其他文件夹下,如:E:jyworkSTMWxlStm32LABlibrary
其中stm32f10x_lib.c文件是整个库的一些定义,是必须要的。
加入后的工程为:
这里,如果有的人觉得不知道使用了哪些库函数,不晓得添加哪些库文件进入工程,有个最简单的办法就是添加所有的固件库函数到工程,为了方便可以直接添加:C:KeilARMRV31LIBST路径下的STM32F10xR.LIB文件进入工程。
之后进行编译和烧写。不过在编译和烧写前需要先进行软件设置。
软件设置
这些设置也可以在工程建立后马上进行。
打开选项窗口:
每一页的设置如下:
设置完这些后就可以编译并下载或调试程序了。
程序在这里已经能正常运行了,会看到单片机上PC13对应的LED灯闪烁。