新建工程的步骤
- 建立工程文件夹,Keil中新建工程,选择型号
- 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面
- 的文件到工程文件夹
- 工程里对应建立Start、Library、User等同名称的分组,然后将文件
- 夹内的文件添加到工程分组里
- 工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹
- 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
- 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash
- Download里勾选Reset and Run
下面来说一下具体步骤:
一、新建工程
使用库函数的方式,需要准备一个STM32 库函数的压缩包
新建一个基于标准库的工程
新建一个文件夹叫工程模板放本次项目
固件库获取:
https://pan.baidu.com/s/1bRC6MWtC7jxyKTCUmBCnRQ?pwd=v4tw
然后找到:
固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3
\DeviceSupport\ST\STM32F10x\startup\arm下的就是STM32的启动文件
STM32程序就是从启动文件开始执行的。
将这些文件都拷贝到工程模板中,但是这样全放进去太乱了,可以新建一个文件夹叫start。
返回到STM32F10x目录
stm32f10x.h 是用来描述STM32有哪些寄存器和他对应的地址的。
system_stm32f10x.c 和system_stm32f10x.h 是用来配置时钟的
STM32主频72MHZ,就是system文件里的函数配置的。
将这三个文件复制下来也粘贴到start文件夹下。
这两个cm3-(Cortex-M3)文件就是内核的寄存器描述.当然他还带了一些内核的配置函数,所以多了个:c文件,我们把它俩一并复制下来也粘贴到start文件夹下。
到此为止工程的必要文件就复制完成了。
返回Keil软件
双击start
点击All files
选择启动文件
按住CTRl选择这三个然后点击Add
然后点击close。
这个图标代表只读文件。
最后在工程选项里添加上这个文件夹的头文件路径,否则软件找不到.h文件
点击
添加main函数看工程是否可行。
进入工程模板文件夹,新建文件夹叫User.
右键添加组
改名为User
右键添加新文件
界面右击
然后编写一个main函数,这里注意main函数是一个int型返回值,void参数的函数。还有文件的最后一行必须要是空行,要不然会报警告。
#include "stm32f10x.h" // Device header
int main(void)
{
while(1)
{
}
}
点击构建,编译并建立工程
二、两种电灯方法
寄存器
#include "stm32f10x.h" // Device header
int main(void)
{
RCC->APB2ENR = 0x00000010;//打开GPIOC的时钟
GPIOC->CRH = 0x00300000;
//GPIOC->ODR = 0x00000000;//亮
GPIOC->ODR = 0x00002000;//灭
while(1)
{
}
}
库函数
新建库文件夹
misc是内核的库函数,其他的是内核外的外设库函数。
全部复制到Library中。
这些是库函数的头文件件全部复制到Library中。
这三个复制到工程的User下。
宏定义方法:
滑到8296行
库函数的工程建法: