环境搭建:

1、安装 Keil uVision4 MDK

        略。

2、安装 J-Link

安装 Setup_JLinkARM_V4501.exe 驱动时,会弹出【SEGGER J-Link DLL Updater V4.501 】对话框,

不要选择 Keil 直接点击OK即可,因为Keil对支持M3内核SW接口采用了JL2CM3.dll 这个文件,该文

件的版本号是和该目录下Jlink驱动版本号配套的,不要擅自改变他们,否则不能使用。

 

建立工程:

 

1、在桌面上建立一个文件夹【MyStm32】文件夹

 

2、在【MyStm32】文件夹下建立【USER】、【FWlib】、【CMSIS】、【Output】、【Listing】文件夹。

 

        【USER】:存放用户自定义的应用程序

 

        【FWlib】:存放库文件

 

        【CMSIS】:存放M3系列单片机通用的文件

 

        【Output】:存放编译器编译后输出的文件

 

        【Listing】:编译器编译过程中产生的文件

 

3、将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 的【inc】跟【src】

     这两个文件夹拷贝到【FWlib】。

   【inc】、【src】片上外设驱动的源文件和头文件。

 

4、\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的

       main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c 、system_stm32f10x.c 拷贝到【USER】

       

        stm32f10x_conf.h:配置文件

 

        stm32f10x_it.h、stm32f10x_it.c:中断函数文件。

 

        system_stm32f10x.c:ARM公司提供的符合CMSIS标准的库文件

 

5、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup的

    【arm】文件夹的拷贝到 MyStm32\CMSIS\startup。

 

       这些都是用汇编编写的驱动文件,STM32F103ZE芯片是大容量Flash,应选择startup_stm32f10x_hd.s

 

6、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 的 core_cm3.c 和 core_cm3.h

      也拷贝到【CMSIS】文件夹下。

 

7、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 的

       stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h 拷贝到【CMSIS】文件夹下。

 

8、用keil MDK 建立工程文件到【USER】文件夹下,工程名为【STM32-DEMO】

      在该工程下建立四个组:

 

        【STARTCODE】:存放启动代码 添加 startup_stm32f10x_hd.s 文件

 

        【USER】:存放用户自定义的应用程序 添加main.c、stm32f10x_it.c

 

        【FWlib】:存放库文件 按需添加src里面的驱动文件

 

        【CMSIS】:存放M3系列单片机通用的文件 添加core_cm3.c、system_stm32f10x.c

 

chibios keil stm32 移植 stm32 keil4配置_M3


          配置MDK:

 

chibios keil stm32 移植 stm32 keil4配置_M3_02



chibios keil stm32 移植 stm32 keil4配置_库文件_03



chibios keil stm32 移植 stm32 keil4配置_库文件_04



chibios keil stm32 移植 stm32 keil4配置_M3_05



chibios keil stm32 移植 stm32 keil4配置_M3_06

 

添加 USE_STDPERIPH_DRIVER 是为了屏蔽编译器的默认搜索路径,转而使用我们添加

到工程中的 ST 的库,添加 STM32F10X_HD 是因为我们用的芯片是大容量的,添加了

STM32F10X_HD 这个宏之后,库文件里面为大容量定义的寄存器我们就可以用了。

芯片是小或中容量的时候宏要换成STM32F10X_LD或者STM32F10X_MD。其实不管是什么容量的,
我们只要添加上 STM32F10X_HD 这个宏即可,当你用小或者中容量的芯

片时,那些为大容量定义的寄存器我不去访问就是了,反正也访问不了。