1. 新建工程文件夹
这里我们建立一个文件夹为 led,作为工程的根目录文件夹。然后为了方便我们存放工程需要的一些其他文件,这里我们还新建下面USER。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了方便识别。
2.新建工程
2.1 打开keil,在project选项中选择 新建工程
2.2 然后选择刚刚新建的文件夹。然后给工程命名,工程名与文件夹尽量一致且有具体意义
2.3 然后进入芯片选择,我们使用的芯片为stm32F103R8T6
2.4 选择需要使用的芯片功能,
在这么多选项中core、startup、rcc、framework这四个是必选项
在device的stdperiph drivers选项卡中其他的是选择具体需要的外设,
点亮led和读取按键只需要选择GPIO就可以
3.新建文件
3.1 添加一个新文件(快捷键 Ctrl+N)点击 feil->new ,然后保存(快捷键 Ctrl+S)
在工程文件夹下面新建一个user文件夹,把所有用户文件放到这个文件夹里面
3.2 添加文件到工程里面
点击这个图标添加文件到工程
选择刚刚新建的文件夹中所保存的文件
添加宏定义和头文件路径
在Define一栏中填写 STM32F10X_BD,USE_STDPERIPH_DRIVER
在include path 一栏中选择头文件( *.h)所在的文件夹
4.编写程序
程序如下
#include "stm32f10x.h"
void LED_Init(void);
void delay(uint16_t time);
int main()
{
int i;
LED_Init();
//红灯闪烁5下
for(i=0;i<10;i++)
{
GPIO_SetBits(GPIOC,GPIO_Pin_8); //低电平点亮
delay(0xa000);
GPIO_ResetBits(GPIOC,GPIO_Pin_8); //高电平点亮
delay(0xa000);
}
while(1)
{
//两个小灯循环闪烁
GPIO_SetBits(GPIOC,GPIO_Pin_0);
GPIO_ResetBits(GPIOC,GPIO_Pin_1);
delay(0xFFFF);
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
GPIO_SetBits(GPIOC,GPIO_Pin_1);
delay(0xFFFF);
}
}
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能PC端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_8; //LED0-->PC.1 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOC.
GPIO_SetBits(GPIOC,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_8); //IO 输出高 电平
}
//禁止编译器优化,循环等待延时
void delay(volatile uint16_t time)
{
while(time--);
}
编译代码,无错无警告则正常
下载
下载使用st link下载,连线如图
点击魔术棒选择下载器型号为stlink,然后点确定退出
最后点击load下载程序,如果下载失败到安装目录下安装stlink的驱动
我的路径:E:\Program Files\kile5\ARM\STLink\USBDriver
然后重新下载,如在还有问题去复制错误信息到百度搜索,查找解决方案
至此stm32新建工程完成