本日志期待实现的目标是:修改Micrium官方提供的例程使其可以在神舟IV号开发板上正常使用,所做的主要修改是将该例程中的ST固件库由2.1.0升级为3.4.0
一、资源准备
神舟IV号开发板及J-Link
Micrium官方STM32F107例程(http://micrium.com/page/downloads/ports/st/stm32)
ST官方STM32F10x标准驱动库v3.4.0(http://www.st.com/cn/mcu/class/1734.jsp)
IAR 6.10(因为下载的工程是在IAR6.10下建的,如果用较早版本打开的话,原有的配置将被重置,编译时会出错)
二、牛刀小试
1、将下载的压缩包(uC-Eval-STM32F107_OS_II.zip)解压,解压后的文件结构如图1所示:
图1 例程文件结构
2、打开“IAR工程文件夹”(图1)下的“OS-II.eww”,工程结构如图2所示
图2 工程结构图
3、该工程实现的功能实际上是让开发板上的3个LED灯闪烁,神舟开发板与官方的开发板LED连接的管脚不同,所以需要做一下修改。打开“bsp.h”文件,将其中的:
#define BSP_GPIOD_LED1 DEF_BIT_13
#define BSP_GPIOD_LED2 DEF_BIT_14
#define BSP_GPIOD_LED3 DEF_BIT_15
改为:
#define BSP_GPIOD_LED1 DEF_BIT_02
#define BSP_GPIOD_LED2 DEF_BIT_03
#define BSP_GPIOD_LED3 DEF_BIT_04
4、其他设置不变,重新编译工程,连接开发板,调试,即看到神舟IV号开发板上的3个LED灯同时闪烁。
三、升级STM32固件库并创建自己的工程
1、根据自己需要新建一个文件夹并命名,此例新建一个“MyNewUcosPrj”文件夹。
2、将例程文件夹里的“uC-CPU” “uC-LIB” “uCOS-II”原封不动地拷到“MyNewUcosPrj”文件夹下。同时在该文件夹下新建一个文件夹“EWARM”,并将“BSP”文件夹复制到该目录下。在“EWARM”目录下新建一个存放IAR工程的文件夹,这里命名为“FirstLED”,在“FirstLED”目录下新建一个“APP”文件夹,并将“OS-II”文件夹中的*.c和*.h文件拷到APP目录下,该目录用于存放应用程序。整体目录结构如图3所示。
图3 新建的目录结构
3、升级STM32固件库。
1) 解压所下载的压缩包STM32F10x_StdPeriph_Lib_V3.4.0.rar,其结构如图4所示。
图4 库函数文件结构
2) 将Libraries文件夹下的两个文件夹复制到BSP文件夹下,同时删除BSP文件夹下的STM32文件夹。
3) 用STM32F10x_StdPeriph_Template文件夹下的stm32f10x_conf.h文件替换APP文件夹下的该文件。至此,新建及替换工作已经完成。
4) 新建工程,并保存在FirstLED目录下,工程结构如图5所示或参考所上传的工程。
图5 新建的工程结构
5) 工程配置,与平常进行工程配置没什么区别。主要是器件选择,头文件搜索路径添加,预定义,调试工具选择。详细参考提供的工程。
6) 文件需修改的地方:
(1)、将includes.h,bsp.h中的stm32f10x_lib.h删除,同时添加
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
(2)、将bsp.c文件中的void BSP_Init (void)函数中的“BSP_IntInit();”和“BSP_CPU_ClkFreq_MHz = BSP_CPU_ClkFreq() / (CPU_INT32U)1000000;”之间的语句用“SystemInit();”代替。
(3)、打开“bsp.h”文件,将其中的:
#define BSP_GPIOD_LED1 DEF_BIT_13
#define BSP_GPIOD_LED2 DEF_BIT_14
#define BSP_GPIOD_LED3 DEF_BIT_15
改为:
#define BSP_GPIOD_LED1 DEF_BIT_02
#define BSP_GPIOD_LED2 DEF_BIT_03
#define BSP_GPIOD_LED3 DEF_BIT_04
(4)、打开stm32f10x_conf.h,打开相应的头文件包含语句。
至少,所做的更改已经完成,编译调试,即可看到3个LED灯闪烁。
工程文件MyNewUcosPrj.rar
文章评论(0条评论)
登录后参与讨论