一、创建工程
1.创建项目
在Keil uVision5中点击Projiect,然后点击New uVision Project,在弹出的窗口中创建工程并选择工程位置,然后在弹出的窗口中选择STM32F103C8(对应的硬件为STM32F103C8T6)
2.添加工程必要文件
在项目工程中创建Start文件夹用于存放工程必要文件
必要文件包含:启动文件+外设寄存器、时钟文件+内核寄存器文件
然后在Keil uVision5中将Source Group 1的名称更改为Start,右键,选择添加已存在的文件到组里
然后在文件过滤器中选择All files
选择startup_stm32f10x_md.s core_cm3.c core_cm3.h stm32f10x.h system_stm32f10x.c system_stm32f10x.h 加入,添加后会发现文件图标带了个小钥匙,表示这些为只读文件
最后需要在工程选项中添加上这个文件夹的头文件路径,打开魔术棒,选择c/c++,在Induce Paths中选择start文件夹的路径
3.创建main.c文件
新建文件夹User,用于存放main函数文件。在keil中右键Target,点击添加组,并改名为User,在User上右键添加新文件,选择C文件,命名为main。并修改路径到User文件夹。
在main.c中右键,选择插入头文件,并选择stm32f10x.h
完成后写入代码并编译完成工程创建。
#include "stm32f10x.h" // Device header
int main(void)
{
while(1)
{
}
}
注意,如果出现报错,如图,
解决方法:打开魔术棒,把v6版本更改为v5
如果还有1个警告,在output界面选勾Create HEX File
全部解决后项目创建完成,这个工程目前未添加stm32的库函数,还是一个基于寄存器开发的工程。
二、点灯
1.通过配置寄存器完成点灯
(1)接线
拿出STM32最小系统板,STLINK,四根母对母杜邦线,安装插针边上的标识,把3.3V、SWCLK、GND对应连接好,接好后把STLINK插入电脑,可以看到电源灯常亮,连接在PC13口上的灯默认闪烁
(2)配置调试器
点击魔术棒,选择Debug,选择ST-Link Debugger
然后点击setting,在Flash Download页面选勾Reset and Run,这样程序下载后会立刻复位执行
点击编译后没问题就点击LOAD下载到单片机。下载成功后PC13口上的灯就不再闪烁了。
(3)点灯
#include "stm32f10x.h" // Device header
int main(void)
{
RCC->APB2ENR = 0x00000010;//使能GPIOC时钟
GPIOC->CRH = 0x00300000;//配置PC13口的CNF为通用推挽输出模式,MOD为最大速度为50MHZ的输出模式
GPIOC->ODR = 0x00000000;//端口输出数据寄存器,灯为低电平点亮,全是0为亮,0x00002000是灭
while(1)
{
}
}
将程序烧录进板子后,PC13口上的灯常亮。
2.通过库函数点灯
(1)添加库函数
在工程文件夹中创建Library文件夹用于存放库函数,将库函数文件复制进去
和之前一样,在keil中右键Target,点击添加组,并改名为Library,然后再右键把刚刚复制的文件添加进去,但现在还不能使用,需要添加这三个文件到工程的User目录下,同样在keil将这三个文件加入User
在stm32f10x.h中复制USE_STDPERIPH_DRIVER
打开魔术棒的C/C++页面将其粘贴到Define一行,这样才能包含标准外设库,同时把User和Library的路径都添加上
(2)点灯
#include "stm32f10x.h" // Device header
int main(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能GPIOC时钟(使能不能放到配置之后)
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//通用推挽输出
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;//选择pc13引脚
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//配置最大速度为50MHZ的输出模式
GPIO_Init(GPIOC,&GPIO_InitStruct);//配置端口模式
//GPIO_SetBits(GPIOC,GPIO_Pin_13);//将PC13号口设置为高电平
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将PC13号口设置为低电平
while(1)
{
}
}
将程序烧录进板子后,PC13口上的灯常亮。
三、总结
建立工程文件夹,Keil中新建工程,选择型号
工程文件夹里建立Start、Library、User等文件夹,复制固件库里面
的文件到工程文件夹
工程里对应建立Start、Library、User等同名称的分组,然后将文件
夹内的文件添加到工程分组里
工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹
工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
工程选项,Debug,下拉列表选择对应调试器,Settings,Flash
Download里勾选Reset and Run