STM32 创建工程与编写步骤一般流程

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时钟再开启外设时钟。

你可能感兴趣的:(stm32,单片机,arm)