首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32开发环境(工具)之Keil MDK 介绍(3)

STM32开发环境(工具)之Keil MDK 介绍(3)



  Use External Tool for Flash Programming:使用第三方的工具进行Flash下载。
  Command:要使用的Flash烧写工具的命令文件(通常是一个.exe文件)。
  Arguments:传递给Flash烧写工具的参数。
  Run Independent:当选中的时候,uVision不等待Flash烧写完成。不选中的时候uVision要等待Flash烧写完成并且在输出窗口显示烧写结果。
在HelloWorld里面修改了Flash Download Setup,具体的设置如上图所示。到此工程设置就结束了。

5.1.2.3 打开工程
通过菜单“Project”->“Open Project”来打开一个现有工程,这时将弹出一个打开文件对话框让我们选择要打开的工程文件。
选择你要打开的工程的路径,然后点击“Open”打开工程。我们还可以和打开其他文件一样,找到一个后缀为“uv2”的uVision3工程文件,直接双击,Windows会自动调用uVision3打开这个文件,前提是你电脑已经安装了uVision3并且和“uv2”文件建立了关联。


5.1.3 编写源程序
选择菜单“File”->“New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口可以输入程序代码。
需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编辑器编写,而且Keil的编辑器对汉字的支持不好,建议使用UltraEdit之类的编辑软件进行源程序的输入。
每一个程序至少有一个原型为int main(void)的主函数,这是程序的入口地址,程序将从这里开始运行。此外,我们还需要对开发板做一些时钟和中断方面的初始化工作,这些工作将在函数RCC_Configuration和NVIC_Configuration中完成。源文件的代码清单如下所示。


  • #include "stm32f10x_lib.h"
  • GPIO_InitTypeDef GPIO_InitStructure;   
  • void Delay (vu32 nCount);   
  • /******************************************************************************* Function Name : main
  • * Description : 主程序  
  • * Input : None  
  • * Output : None  
  • * Return : None  
  • ******************************************************************************/
  • int main (void)   
  • {   
  •     RCC_APB2PeriphClockCmd(RCC_APB2Periph_ GPIOB, ENABLE);   
  •     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;   
  •     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
  •     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  •     GPIO_Init (GPIOB, &GPIO_InitStructure);   

  • while (1)   
  •     {   
  •         GPIO_WriteBit (GPIOB, GPIO_Pin_9,   
  •             (BitAction)(1-GPIO_ReadOutputDataBit (GPIOB, GPIO_Pin_9)));   
  •         Delay (1000000);   
  •     }   
  • }   
  • void Delay (vu32 nCount)   
  • {   

  • for (; nCount != 0; nCount--);   
  • }  


代码编辑完成之后,我们可以保存源文件,选择菜单“File”->“Save”或者点击工具栏的保存文件按钮,可以用来保存源文件。
这时会出现一个保存文件的文件对话框,选择你要保存的路径,输入文件名HelloWorld.c。注意一定要输入扩展名,如果是c程序文件扩展名为.c,如果是汇编文件扩展名为.s,习惯.asm的也可以存储为.asm。注解说明文件可以保存为.txt的扩展名。
源文件编辑完成之后我们还需要将源文件加入到工程中,工程建好之后,在工程窗口的文件页中,将会出现“Target 1”,前面有个“+”号,点击“+”号展开,可以看到下一层的“Source Group 1”,我们需要向这个里面加入源文件,点击“Source Group 1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如下图如示。



选中其中的“Add file to Group ‘Source Group 1’”,出现一个对话框,要求寻找源文件,如下图所示。


注意,该对话框下面的“文件类型”默认为C source file(*.c),我们可以通过调整这个来选择过滤我们想要格式的文件,从而帮助我们快速查找文件。如果是汇编文件,就选择“asm source file”;如果是目标文件,选择“Object file”;如果是库文件,选择“Library file”。最后点击“Add”,也可以双击要添加的文件进行加入。注意:点击“Add”之后,窗口不会消失,如果要添加多个文件,可以不断添加,添加完毕此时再点击“Close”关闭该窗口。初学者时常误认为操作没有成功而再次双击同一文件或者再次点击“Add”,这时会出现如下的对话框。


在这里我们把刚新建的HelloWorld.c添加进去,文件添加进去之后,我们点击“Source Group 1”前面的“+”号,就会发现我们刚刚添加的文件HelloWrold.c已在其中了,双击文件名,即在代码区打开该源程序文件。
除了添加文件,我们还可以添加新的Group,操作和添加文件类似,出现下拉菜单之后我们选择“New Group”,这时就会在工程窗口看到新加的Group。对Group和添加文件的操作我们还可以通过点击工具栏上的彩色品字按钮进入“Components,Environment and Books”窗口,如下图所示。



双击列表中的项可以对该项进行重命名操作,点击空白处可以添加新的项,虚方框按钮也可以添加新的项,红叉表示删除选中的项,上下箭头用于调整当前选中项在列表中的位置,“Add Files”可以添加新的源文件,操作过程和前面添加文件的操作是一样的。

5.1.4 编译程序
程序代码写好之后就进入编译程序阶段,可以通过菜单,工具栏和浮动菜单多种方式来发起编译过程,也可以通过批处理文件进行,关于这个批处理文件在Output标签页的设置中提到过。



红线圈起来的区域就是对应的菜单编译命令和工具栏编译命令。各命令的含义如下:
  Clean target:清除编译结果。
  Build target:编译被修改的文件并且编译应用程序。
  Rebuild all target files:重新编译所有的源文件并且编译应用程序。
  Batch Build:通过前面输出的批处理文件进行编译。
  Translate **.*:编译某个源文件,**.*代表要编译的源文件。
  Stop build:只有编译进行过程中这一项才有效。
通过在工程窗口“Target 1”上点击右键,也可以弹出相应的编译菜单,各命令含义和上面一致。



现在就让我们来编译我们的“HelloWorld”,如下图所示,编译的结果会在输出窗口显示。

很遗憾,有不少错误,也许你早就发现我们的代码中使用了很多我们没有定义的而且也不属于标准C的一些函数,没错这就是ST固件库给我们提供的函数,我们要做的就是把固件库添加到我们的工程中,和其他的开发环境一下,我们可以直接添加固件库的源文件和工程一起编译,也可以通过添加已经编译好的静态连接库(*.lib)文件。这里我们以后者为例,这些库在我们安装好Keil开发环境的时候已经提供了,路径一般在你安装目录下的ARM/RV31/LIB/中,例如我这里的路径是D:/Keil/ARM/RV31/LIB/ST。这里我们将添加一个新的Group,取名为FWLIB。然后将库文件添加到这个Group中,具体的操作过程可以参照编写源程序章节。添加库之后我们再次编译。
继承事业,薪火相传
返回列表