STM32 实验2报告
1.11、用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_md.s,USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中去了,最后点击OK,回到工程主界面
while(1)
{
t=KEY_Scan();//得到键值
if(t)
{
switch(t)
{
case 1:
LED0=!LED0;
break;
case 2:
LED1=!LED1;
break;
case 3:
LED0=!LED0;
LED1=!LED1;
break;
}
}else delay_ms(10);
}
}
3、实验现象:
1.12、下面我们要告诉MDK,在哪些路径之下搜索相应的文件。回到工程主菜单,点击魔术棒,出来一个菜单,然后点击c/c++选项.然后点击Include Paths右边的按钮。
弹出一个添加path的对话框,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一
按下同时控制两盏灯的亮灭。
按下就红灯亮,按下就红绿亮。
五、实验与总结
有了上次实验,这次试验相对来说难度没那么大,使用固件库的基本流程都已学会,可以说是比较熟悉了。而由于借出过一次软件了,所以对软件也比较熟悉,操也作起来比较熟练,没有第一次那么陌生了,慢慢来总会有进步的。
对于这次试验,感觉没什么难度,可能是比较熟悉的原因吧,很快就可以做好了。
实验
一、实验目的
1、掌握嵌入式程序设计流程。
2、熟悉STM32固件库的基本使用。
二、实验内容
1、编程使用I/O口作为输入,控制板载的两个LED灯。
2、使用固件库编程。
三、实验设备
硬件:PC机一台
MINI STM32开发板一套
软件:RVMDK V3.8一套
Windows XP一套
四、实验步骤
1、设计工程,使用固件库来编程设置。
1.1、在这里我们建立一个文件夹为: STM32-Projects.
点击Keil的菜单:Project–>New Uvision Project,然后将目录定位到刚才建立的文件夹STM32-Projecst之下,在这个目录下面建立子文件夹shiyan1,然后定位到shiyan1目录下面,我们的工程文件就都保存到shiyan1文件夹下面。工程命名为shiyan1,点击保存.
1.8、定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x将里面的三个文件stm32f10x.hsystem_stm32f10x.csystem_stm32f10x.h,复制到我们的USER目录之下。
1.2、这里我们定位到Sni板子是这个型号。
1.3、弹出对话框“Copy STM32 Startup Code to project….”,询问是否添加启动代码到我们的工程中,这里我们选择“否”,因为我们使用的ST固件库文件已经包含了启动文件。
1.6、我们将文件加入我们的工程中去。右键点击Target1,选择Manage Components
1.7、把将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。
打开官方固件库包,定位到目录。
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件core_cm3.c 和文件 core_cm3.h 复制到 CORE下面去。STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下面,将里面所有的文件同样复制到 CORE 下面
但是,在实验过程中却遇到了一个比较大的问题,就是下载的时候老是检查不到通道,试过很多种方法都没有成功,这就导致我们这组最后没有验收。因为这个原因我们首先检查配置和代码,但是发现都没错。我们求助很多同学,但最后都没有解决,后来快下课的时候不知道怎么搞得它竟然可以了。。。。
我想应该是数据线的问题吧,或者是USB接口的问题,导致下载器一直检查不到板。
然后STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的4 个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到 USER 目录下面
1.9、Project Targets 一栏,我们将 Target 名字修改为Template, 然后在 Groups 一栏删掉一个,建立三个Groups :USER,CORE,FWLIB.点击OK.可以看到我们的Target 名字以及Groups 情况。
1.16、编译代码,可以看到生成了hex文件,这个文件我们用mcuisp下载到mcu。
1.17、编译结果
2、编写代码,实现I/O编程及LED控制;
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
int main(void)
1.10、往Group里面添加我们需要的文件。右键点击点击Tempate,选择选择Manage Components.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的Add Files,定位到我们刚才建立的目录STM32F10x_FWLib/src下面,将里面所有的文件选中(Ctrl+A),然后点击Add,然后Close.
1.4、接下来,我们在Template工程目录下面,新建3个文件夹CORE, USER,
STM32F10x_FWLib。USER用来放我们主函数文件main.c,以及其他包括system_stm32f10x.c等等,CORE用来存放启动文件等,STM32F10x_FWLib文件夹顾名思义用来存放ST官方提供的库函数源码文件.
通过这次的实验,让我学会应该仔细做实验,做好每一步,争取不要给它出错的机会,这样才能事半功倍。
1.5、.打开官方固件库包,定位到我们之前准备好的固件库包的目录。STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。
{
u8 t;
SystemInit(); //系统时钟设置
delay_init(72);//延时初始化
NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
LED_Init();//初始化与LED连接的硬件接口
KEY_Init();//初始化与按键连接的硬件接口
级子目录。然后点击OK.
1.13、定位到c/c++界面,然后复制“STM32F10X_MD,USE_STDPERIPH_DRIVER”到Define里面。
1.14、把编写好的主函数放在USER里。
1.15、下面还需要配置,让编译之后能够生成hex文件。同样点击魔术棒,进入配置菜单,选择Output。然后勾上下三个选项。。