STM32 创建工程与编写步骤一般流程
创建工程步骤:
1.新建一个用于存放工程的文件夹,在里面再创建几个文件夹
(1)DOC——存放相应的文档
(2)Drives——存放自己编写的驱动文件
(3)Libries——将STM个给的官方库下的 “CMSIS”和“STM32Fxxx_stdPeriph_Deiver”复制到该文件下 如STM32F103官方固件库\【固件库】STM32F10x_StdPeriph_Lib_V3.5.0\Libraries下的两个文件
(4)Listing——为空,在keil工程的魔术棒 Listing下配置到该文件即可
(5)Output——为空,在keil工程的魔术棒 Output下配置到该文件即可
(6)Projiect——将keil工程创建在此文件夹下即可
(7)User——将 官方给的固件库STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的几个C和H文件全部复制到该文件夹下
2.创建一个keil工程 选择对应的芯片后跳出来的选型卡关闭即可。
3.在工程下添加几个组
(1)DOC——将之前创建的文件夹下DOC的文件添加到此组即可
(2)STARTUP——将之前创建的文Libraries 件夹下的Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下选则对应容量的启动文件 添加到此组即可
(3)CMSIS——将之前创建的文Libraries 件夹下的Libraries\CMSIS\CM3\CoreSupport的“core_cm3.c”
与Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的 “system_stm32f10x.c” 添加到该组中
(4)FWLB——将之前创建的文Libraries 件夹下Libraries\STM32F10x_StdPeriph_Driver\src 下的全部文件添加到该组中
(5)USER——将之前创建的 USER问件夹下的 main.c 和stm32f10x.it.c 添加到该组中
(6)DRIVE——将之前在Drives文件夹下的c文件添加到该组中
4.在keil的魔术棒工具栏中配置选项卡
(1)Output选项卡——点击Select Folder Object 将文件放在之前创建的文件夹Output下,并勾选上 Create HEX File
(2)Listing选项卡——点击Select Folder Object 将文件放在之前创建的文件夹下Listing
(3)C/C++选项卡——点击Includepath添加头文件的路径
[1]…\User
[2]…\Libraries\STM32F10x_StdPeriph_Driver\inc
[3]…\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
[4]…\Libraries\CMSIS\CM3\CoreSupport
(4)Debug选项卡——用于配置下载器,配置好后可进行调试
程序书写步骤:
1.在Drives文件夹下床架相应的“C”和“H”文件
2.在DRIVE组中添加,在Drives文件夹下C文件并在第一行写下 #include 处理对应的头文件,并开始编译。
3.在DRIVE相应的头文件中 进行引脚定义 (可以去stm32f10x.h和stm32f10x_gpio.h中寻找),复用的功能也需要定义 在stm32f10x.h 中寻找对应的名称
4.配置引脚的时钟(stm32f10x_rcc.h),需打开两个时钟一个是普通的IO口时钟,还有一个是用到的功能时钟 ,并还需要注意他们分挂载在那根时钟线下。
5.如需开启中断则在 stm32f10x.h中寻找对应的名称,并在stm32f10_it.c中编写中断处理函数 一般为“xxx_IRQn”
6.中断服务函数的名称在“startup_stm32f10x_hd.s”中寻找 其前面有关键字“DCD” ,一般为 “xxx_IRQHandler”。
7.中断处理函数在 “stm32f10x_it.c” 文件中编写
8.在对应的C文件中,初始化中断与引脚、功能。
(1)中断在misc.h文件中寻找
(2)其他需要初始化引脚与功能 在stm32f10x_gpip 与stm32f10x.xxx(使用的功能) 中寻找。
(3)一般来说最少需要配置三个东西
[1].XXX_InitTypeDef 配置对应的结构体
[2].XXX_Init(),初始化
[3].XXX_Cmd().是能对应功能
9.写各个模块初始换结构提之前 应提前开启时钟 ,单独编写一个函数开启时钟的函数放在最开头先开启GPIO时钟再开启外设时钟。