目录
一、创建一个新工程
二、为工程添加文件和路径
三、创建一个main.c文件,并调试
四、修改一些配置
五、用库函数进行写程序
1、首先加入一些库函数和头文件
2、编写库函数程序
一、创建一个新工程
我这里选择STM32F103C8的型号,然后点击OK。
keil5里面的小助手,暂时不用,叉掉
二、为工程添加文件和路径
在工程模板中还需要添加启动文件、系统头文件、系统时钟文件,创建一个文件夹start,将下面文件都添加里面如下:
由于这个内核的寄存器描述和外围设备的描述文件不是在一起的,所以还需要添加一个内核寄存器的描述文件
然后进入工程中,进行添加文件,将启动文件后缀为md.s加入里面,然后再将剩下的.c和.h文件都加入里面。
对于启动文件补充,如下图,先根据型号进行选择,再根据Flash容量选择对应后缀名的启动文件。如我是使用的是STM32F103C8T6,Flash是64k,所以选择后缀名为md.s的文件。
然后添加系统头文件的路径,点击魔法棒——>C/C++(AC6)——>Include Paths,然后点击右侧小红框。
先点击最左侧的小红框,再选择最右侧的小红框添加头文件的路径,然后点击OK。
三、创建一个main.c文件,并调试
创建main.c 文件,写入下面的代码,会发现头文件会报错,就很纳闷,怎么会有错误呢?
经过查阅资料,进行如下操作,点击魔法棒——>Target——>ARM Compile——>Use default complier version 5,把编译器版本6换成版本5,就解决了。
四、修改一些配置
然后修改一下配置,点击扳手,将编码格式修改为UTF -8,防止中文乱码。如果查看别人写的代码,出现乱码了,还是要修改的。然后点击Ok。
然后选择调试器,这里我用的是STLINK,点击魔术棒——>Debug——>Use,如下:
然后点击Use后的settings,点击Flash Download,把Reset and Run勾上,勾上这一项之后,我们下载程序后立马复位并执行(我的这个芯片不行,需要复位一下),这样方便一些。
五、用库函数进行写程序
1、首先加入一些库函数和头文件
创建一个文件,名称为Library,特此说一下,需要在Include Path内声明所有包含头文件的文件夹,把下文面的文件全部添加在里面。
库函数.c文件
库函数.h,也就是头文件
还必须添加配置文件conf.h和中断文件it.c和it.h,如下;
如果让conf.h文件有效,还需设置,如下:
将 USE_STDPERIPH_DRIVER 进行定义,如下:魔法棒——>C/C++——>Define,然后点击Ok。
2、编写库函数程序
点亮PC13口的LED灯。程序如下:
#include "stm32f10x.h" // Device header
int main(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13 ; //PC13口
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; //50HZ
GPIO_Init(GPIOC,&GPIO_InitStruct);
GPIO_SetBits(GPIOC,GPIO_Pin_13); //设置为高电平,熄灭
GPIO_ResetBits(GPIOC,GPIO_Pin_13); //设置为低电平,点亮
while(1)
{
}
}