小白总结,不是很详细(自己记性不好,万一自己忘记了可以直接看自己的总结^-^)
- 环境 keil5 &&STM32F1xx固件库
固件库下载方式(转载) - 新建文件夹:在工程文件夹下新建四个子文件夹名字随意
其中USER用来存放工程文件OBJ用来存放生成的中间文件
LIB用来存放需要用到的头文件及.c文件。CORE用来存放启动文件
3. 新建工程放在USER目录下,选择MCU的型号
- 复制文件(省略)
LIB需要复制两个文件夹(inc和src)
inc中包含一些用到的头文件,src中包含一些.c文件
路径:**STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver**
CORE中复制三个文件
路径:STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
路径:(一个hd文件根据flash大小选择)STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
USER中复制(7个文件有一个重复)
路径:(3个文件)STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
路径:(5个文件)STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project
5.修改生成文件路径(OBJ)
添加目录在目录下添加文件
USER下3个.c文件
CORE下一个.c文件一个.hd(hd文件默认是看不见的)
LIB下放入src下全部文件
define填写预编译宏标识符
include包含头文件路径
6. 将下列代码复制到main中进行编译没有错误代表工程建立成功
如果你之前编译过可以将OBJ下的文件清空重新编译
8.
#include “stm32f10x.h”
void Delay(u32 count)
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PA,PD端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PD.2 输出高
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO`_SetBits(GPIOD,GPIO_Pin_`2);
Delay(3000000);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
}
}