图文结合教你在RVMDK上建立自己的STM32工程
发布: 2009-5-20 15:59 | 作者: hnrain | 查看: 53次
在网上找了很久,还是没有能找到一篇图文结合的介绍如何在RVMDK上建立自己的STM32的工程的好文章,于是下决心自己写一篇。
偶用的是RealView MDK 3.22评估版。可以在网上搜索一下,很容易就下载到了。
一、先新建一个工程项目文件夹。由于RV编译环境需要加入比较多的库文件,有用户自己写的代码,也有库文件,还有编译输出文件,还有新建的工程文件。所以我们最好在新建立的文件夹里再新建几个子文件夹,这样就不容易乱,我按照网上介绍的,建立的GPIO工程如下:
二、首先双击桌面上的Keil uVision3快捷方式,打开的是你上次打开过的一个RV工程。这个不用理它,你直接点击Project – New uVision Project,如下图:
会出现一个Creat New Project对话框,提示我们要将此工程保存到什么路径之下:
三、我们将工程保存到GPIO文件夹中的Obj子文件夹中,输入文件名(不用输后缀,因为后缀默认为*.uv2),点击“保存”,会自动弹出选择ARM器件对话框:
选择好目标ARM型号,单击“确定”,会弹出一个对话框,提示你是否要添加启动文件,点击“是”:
这样,工程就建立好了。
四、 管理建立好的工程。因为文件比较多,所以我们最好用几个文件夹来放不同类型的文件。注意,这些文件夹是虚的,实际中并不存在,只是方便管理而已。
如下图:
点击工具栏上的那个“品”字形按钮,或者右击Source Group1,选择Manage Components,出现以下对话框:
根据个人的习惯,建立几个文件夹,一般建立三个:
1)StartUp:用来存放STM32的启动文件;
2)在Project菜单下的用户写的源文件main.c,保存在User子文件夹下,把该文件添加到工程中(Add File to Group \"User\")并编写程序代码;
3)将所使用到的库函数加入工程(Add File to Group \"Lib\"),其中stm32f10x_lib.c文件是整个库的一些定义,是必须要的;在这里,如果不知道使用了哪些库函数,不知道应该添加哪
些库文件进入工程,就添加所有的固件库函数到工程,为了方便可以直接添加:C:\\Keil\\ARM\\RV31\\LIB\\ST路径下的STM32F10xR.LIB文件进入工程;
设置好的界面如下:
我们在编译之前还应该对工程选项做些设置,这些设置也可以在建立工程后马上进行;在工程上单击右键,选择“Options for Target”,打开选项窗口:
Device标签为器件选择,这在建立工程的时候就设置好了。
Target标签为目标设置;
Output标签为输出设置,是输出信息的输出路径,点击“Select Folder for Objects”,一般偶选择输出文件存放路径为Out子文件夹;
Debug标签为DEBUG调试设置,默认状态为软件调试,而也可以选择JLINK和ULINK或者ST LINK-II Debugger进行硬件调试,选择Run to main是为了进入调试状态后直接进入主函数;
Utilities标签是程序下载设置。
这样,我们就可以进行程序的编写和编译了。比起CARM来,偶感觉有点点麻烦,呵呵。
Keil MDK工程管理图文详解
发布: 2009-5-20 15:47 | 作者: hnrain | 查看: 53次
前几天有人问RVMDK下的工程管理,说前面的博文写的太简单了,希望能写个图文教程。今日得闲,写下此文送给大家。
好的代码管理方法能给人一种有条理的感觉,通过将不同功能的代码文件分门别类的组织起来,不仅可以理清整个项目的脉络,还可以非常方便的在各代码文件和函数间跳转,从而加快项目的开发速度。
RVMDK的工程管理在Project WorkSpace窗口中,上图是我建立好的一个STM32的工程目录,有三个Groups,分别用来存放STM32的启动文件、库文件和用户文件。
下面介绍进行工程管理的步骤:
第一步、在Project WorkSpace窗口中刚建好的工程上点击鼠标右键,在弹出的菜单中选择“Manage Components”,打开项目管理对话框;
第二步、在“Project Components”标签下根据需要建立目录,第一栏是工程的根目录,在这里可以修改目录名;第二栏是添加Groups,可以根据个人习惯建立不同的组来分别放置不同类型的文件;第三栏是为建立的组添加代码文件用的,点击“Add Files”添加。
这样就完成了工程管理目录的设置,除了用上面的方法添加代码文件外,还可以直接在Project WorkSpace窗口中用鼠标右键进行添加。在Project WorkSpace窗口中选择不同的标签还可以查看Regs、Books、Functions等信息,比较有用的是在Regs中查看通用寄存器的值,在Functions中进行不同代码文件和函数间的跳转。
个人认为Keil MDK的工程管理功能还是非常方便的,值得称道
STM32 RVMDK学习实例_1.GPIO软件仿真
发布: 2009-5-20 16:05 | 作者: hnrain | 查看: 60次
使用Keil的RealView MDK开发工具进行STM32的学习已经有一段时间了,感受最深的是MDK提供的软件仿真功能——很好很强大。从IAR转到MDK开发环境以后,我就很少像以前那样一遍遍的将程序下载到开发板上进行调试了,而更多的是采用MDK的软件仿真功能进行调试,有事半功倍的效果!从今天开始,我会陆续把以前做的一些试验发布到Blog里,希望大家多来捧场!
STM32 RVMDK学习实例的第一回就从GPIO的软件仿真入手。我使用的是RealView MDK 3.22评估版,英蓓特对其帮助文件进行了汉化,大家可以到下面的地址下载:http://www.realview.com.cn/down-list.asp?id=487
第一步当然是建立工程了,这里就不详细叙述了(可以参考Blog前文,网上也有很多介绍);
第二步编写代码并编译,关键代码如下:
int main(void)
{
#ifdef DEBUG
debug();
#endif
RCC_Configuration();
GPIO_Configuration();
while(1)
{
// For STM3210B-LK1
GPIO_SetBits(GPIOB, GPIO_Pin_5);
delay();
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
GPIO_SetBits(GPIOB, GPIO_Pin_6);
delay();
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
delay();
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
GPIO_SetBits(GPIOB, GPIO_Pin_8);
delay();
GPIO_ResetBits(GPIOB, GPIO_Pin_8);
GPIO_SetBits(GPIOB, GPIO_Pin_7);
delay();
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
GPIO_SetBits(GPIOB, GPIO_Pin_6);
delay();
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
}
}
很简单,就是用GPIOB的5、6、7、8位实现流水灯效果。
第三步选择Debug工具,打开“Options对话框”-〉选择“Debug标签”-〉选中“Use Simulator”->确定;
第四步进入Debug模式,打开“Debug菜单”-〉选择“Start/Stop…”此时会弹出32K代码的提示,不用理会,确定即可进入软件仿真模式。
Debug工具条如下:
第五步选择外围模块进行仿真,不同型号的STM32会有不同的外设仿真功能。
打开“Peripheral菜单”-〉选择“GPIOB”打开仿真对话框。
点击Debug工具条的运行按钮,在仿真对话框里就可以看到程序的运行结果了,GPIOB的各项参数一目了然。