我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 执行例程 >

使用Keil MDK运行第一个STM32程序

归档日期:06-28       文本归类:执行例程      文章编辑:爱尚语录

  应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板,个人录制,欢迎指正。下载地址:

  在上一小节中已经详细介绍了使用Keil MDK和标准外设库创建一个工程的过程,下面将介绍基于这个工程来编写一个小程序,通过这个程序我们可以初步了解:

  在基于标准外设库进行程序开发时一定要充分利用标准外设库下面的帮助文件stm32f10x_stdperiph_lib_um.chm以及库中自带的工程实例,同时结合STM32F10x系列的芯片手册来完成程序的开发,stm32f10x_stdperiph_lib_um.chm帮助文件如图 5‑25所示。此文件中已经包含了标准外设库的全部内容,并根据根据内容结构进行了重新的编排和整理,更加方便程序的阅读和理解。

  STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples文件夹下包括了众多外设的使用例程,这里的例程多是针对官方的开发板而编写,然而这些例程却非常全面的展示了相关外设的各种使用方法,对我们做基于标准外设库的开发有着非常重要的意义。

  我们的第一个程序就通过这些参考来完成,首先来看串口部分。串口部分的详细信息可以参考本书第8章,这儿只进行简单的说明和介绍简便的开发方法,首先先找一个与我们使用的功能最近的一个例程,STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART文件夹下给出了多达12中的USART例程,这里选择较为相近的Interrupt文件夹下得例程,打开文件夹下面的mian.c文件,通过简单的浏览可以找到如下一段程序:

  然后利用USART_Init函数进行初始化,这段程序中设置了两个串口,使用同样的配置,然后配置相应的中断。最后通过USART_Cmd函数使能相应的串口,前面有过介绍,这些例程里的程序是针对官方的开发套件的,因此程序中并没有指名具体的端口,而是使用了宏定义USARTy、USARTz。通过这段程序就可以很方便的更改相关的参数得到我们需要的配置程序。

  这段函数完成了相关的I/O配置,首先通过宏定义判断是官方的哪一款开发套件,然后进行相应的端口映射(端口映射请参加官方的数据手册),然后进行相应的端口配置,同串口配置一样,这段程序中德端口用的也是宏定义USARTy_RxPin替代的,改为我们使用的实际I/O,端口时钟设置为50MHz,串口所使用到的端口设置为复用(GPIO_Mode_AF_PP)完成端口初始化。

  另外仍然通过观察这个例程可以很容易发现,在使用一个外设时还需要首先打开对应的外设时钟,这部分程序如下:

  这段程序中需要注意两点,首先,GPIO、USART等都是连在APB1、APB2两条总线上的,各外设具体的总线,因此首先应该确定外设对应的总线总线总线。其次使能相应的时钟时不光要使能对应的I/O端口,还要使能总线的复用端口,这点也容易忽略。

  最后根据库中的例程,借鉴库中例程的编写风格,就可以得出我们需要的程序,程序在工程的mian.c中编写,函数如下:

  三个图标,分别为编译指定文件、生成工程、重新生成所有工程。首先在mian.c下点击编译图标,如果编译没有错误,则输出窗口如图 5‑26所示。如果编译存在错误,点击错误的地方可以直接定位到错误行,根据错误提示进行修改。

  第一次生成工程成功以后,如果修改了相应的文件再次点击生成工程时只会对有改动的文件进行重新编译、生成,而重新生成全部工程会重新生成工程中的所有文件。

  在实际开发时,可以首先利用软件进行仿真,利用软件进行仿真查看具体的寄存器配置,外设的工作情况等,同时通过断点的配合可以查找出程序中绝大多数的错误。软件仿真完成后可以下载到硬件平台去运行,如果程序仍然没有达到需要的效果,在硬件检查完成后可以使用在线仿真的方式,在硬件平台上直接运行程序,进一步查找问题。

  在菜单Peripherals中可以打开需要查看的外设,这里点击Peripherals-USART1弹出USART1的相关观察窗口,点击运行后,窗口如图 5‑31所示,就会显示运行的程序对USART1所完成的相关配置。从中可以清晰的看出,程序对USART1的相关寄存器配置,从地面Settings一栏中则可以直观的看出USART1当前的工作状态,从这儿就可以检查我们的相关参数设置正确与否,对应时钟有无开启等。需要说明的是这里寄存器在进行仿真的时候是可以进行改写的,也就是说允许我们在程序运行的时候直接进行相关的操作来观察运行结果。但是此时程序本身也是可以对寄存器进行操作的,因此直接更改相应的寄存器观察时还要注意你的操作是否和程序冲突。例如在本程序的运行过程中如果将寄存器中发送使能TE的勾给去掉,则串口就不会在输出数据。

  接下来继续查看I/O的配置,本程序中使用的是F端口,则点击菜单Peripherals-General-Purpose I/O,选择GPIOF,出现GPIOF的配置窗口,程序运行后可以通过窗口查看GPIOF的相关配置,如图 5‑32所示。在这个窗口中可以查看引脚的配置情况,当程序运行时就能看到对应引脚的勾在闪烁。

  通过这些操作,可以非常方便、直观的查看程序运行后对应的配置是否与我们预想的一致,那么在本程序中通过串口输出了“Hello World!”又该怎样查看运行结果呢?在工具栏

  图标,弹出如所示下拉菜单,选择UART#1如图 5‑33所示,或者点击View菜单点击Serial Windows选择UART#1即可打开UART的输出窗口,运行程序后会在此窗口中输出串口信息,如图 5‑34所示。

  至此,已经利用Keil MDK的软件仿真功能完成了程序的调试,看到了设计的效果。通过这个例子也能够让我们深刻的体会到Keil MDK在线调试功能的强大之处。接下来我们将编写好的程序下载到开发板中运行,看看运行效果。

  编写好的程序工程生成完成后下载到硬件平台的方法有很多种,一是直接利用Flash烧写工具烧写相应的hex文件,在工程配置时需要设置才能生成hex文件,具体设置参加图 5‑16,生成hex文件之后就可以利用烧写工具烧写到硬件平台,常用的仿真器都带有相应的软件工具,如笔者使用的JLink-V8,可以使用自带的J-Flash工具,使用J-Flash工具如图 5‑35所示,在工程管理中选择所使用的硬件平台,点击Target-Connect后就可以连接上硬件平台,在图中左侧显示了仿真器以及对应的硬件平台信息。然后选择所生产的hex文件,就可以讲编译的程序下载到硬件平台中。

  这种下载方式非常适合将程序源码不公开的情况下将程序固件提供给第三方使用,然而在使用Keil MDK时还有更为方便的方式,在工程设置中设置好了下载工具后可以点击

  这里使用本章所介绍的TKStudio中的串口调试助手工具来进行查看,设置串口的相应参数与程序一致,串口设置于运行结果如图 5‑37所示,从图中可以看出串口接数据正确,开发板上的两个LED也在不停闪烁。

  至此,我们完成了一个简单的程序开发过程。本小节通过实现串口输出与LED闪烁的功能系统的介绍了怎样基于标准外设库进行程序的开发与调试,这儿只是列举了一个非常简单的小例子,更多的联系读者可以参考标准外设库中的例程自行完成。

本文链接:http://guidoon.com/zhixinglicheng/163.html