开发板与电脑连接成功后,打开keil软件,点击project,选择open project打开相应的工程文件,选择魔术棒,选择Debug,在use一栏中选择J-LINK下载器,点击Setting,观察TDO是否读取,若读取成功,点击确定,点击OK,然后点击Rebuild对程序进行编译,编译无错误后,点击load下载,显示Flash load finished,表示下载完成。
注意:修改程序后,一定要记得对程序重新编译,否则下载成功后,依然是修改前的程序。
二.keil软件如何设置中文注释
打开keil软件,选择Edit,选择configuration,选择Editor,在Encoding一栏里选择chinseGB2312(中文简体),点击OK即可。
三.keil软件如何调用Project窗口并锁定
打开keil软件,选择View,选择Project Window,调出Project 窗口,如果未锁定在keil界面左侧,则点击鼠标右键,点击Docking即可将Project 窗口锁定在keil界面左侧。(其余窗口的调用同上)。
四、使用USB串口及FLYMCU软件下载程序的方法
开发板与电脑通过USB串口连接后,打开FLYMCU软件,点击搜索串口,选择Port,选择工程文件里边的OBJ文件,选择.Hex文件,点击开始编程即可。
注意事项:
(1)需要勾选“校验”,“编程后执行”,“编程前重装文件”,其余均不勾选,尤其不能勾选“编程到FLash时写选项字节”。
(2)点击开始编程前,切记要关闭sscom串口调试软件。
(3)有些开发板会设置拨动开关,用于选择供电方式:USB供电或者外部DC供电。
五、恢复keil软件默认布局的方法
选择window---Reset View to Defaults---Reset即可。
六、keil软件仿真的方法
(1)选择魔术棒---选择Device---选择STM32开发板芯片型号---选择Target---查看开发板原理图,根据STM32芯片所配的晶振Xtal(MHz)选择晶振频率。
注:确认了芯片以及外部晶振频率(8.0Mhz) 之后,基本上就确定了 MDK5. 14 软件仿真的硬件环境了。
(2)选择Debug---选择Use Simulator(软件仿真),勾选Run to main(跳过汇编代码),其余根据下图进行配置。
注:选择Use Simulator,即使用软件仿真。选择Run to main(),即跳过汇编代码,直接跳转到 main 函数开始仿真。设置下方的:Dialog DLL 分别为:DARMSTM.DLL和TARMSTM.DLL ,Parameter 均为:-pSTM32F103ZE,用于设置支持 STM32F103ZE 的软硬件仿真(即可以通过Peripherals 选择对应外设的对话框观察仿真结果)。最后点击 OK,完成设置。
(3)我们点击(开始/停止仿真按钮),开始仿真,出现如图所示界面:
(4)Debug工具条按钮的使用
复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。
执行到断点处:该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的, 而是想快速的执行到程序的某个地方看结果, 这个按钮就可以实现这样的功能,前提是你在查 看的地方设置了断点。
挂起:此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止下来, 进入到单步调试状态。
执行进去:该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。
执行过去: 在碰到有函数的地方,通过该按钮就可以单步执行过这个函数, 而不进入这个函数单步执行。
执行出去:该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。
执行到光标处: 该按钮可以迅速的使程序运行到光标处, 其实是挺像执行到断点处按钮功 能,但是两者是有区别的,断点可以有多个, 但是光标所在处只有一个。
汇编窗口: 通过该按钮, 就可以查看汇编代码,这对分析程序很有用。
观看变量/堆栈窗口:该按钮按下,会弹出一个显示变量的窗口,在里面可以查看各种你想要看的变量值,也是很常用的一个调试窗口。
串口打印窗口:该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
内存查看窗口:该按钮按下,会弹出一个内存查看窗口, 可以在里面输入你要查看的内存地址, 然后观察这一片内存的变化情况。是很常用的一个调试窗口。
性能分析窗口:按下该按钮,会弹出一个观看各个函数执行时间和所占百分比的窗口,用来分析函数的性能是比较有用的。
逻辑分析窗口:按下该按钮会弹出一个逻辑分析窗口,通过 SETUP 按钮新建一些 IO 口, 就可以观察这些 IO 口的电平变化情况,以多种形式显示出来, 比较直观。
Debug 工具条上的其他几个按钮用的比较少,我们这里就不介绍了。以上介绍的是比较常用的,当然也不是每次都用得着这么多,具体看你程序调试的时候有没有必要观看这些东西,来决定要不要看。
这样,我们在上面的仿真界面里面选内存查看窗口、串口打印窗口。然后调节一下这两个窗口的位置,如图所示:
(5)我们把光标放到 main.c 的 12 行的空白处,然后双击鼠标左键,可以看到在 12 行的左边出现了一个红框,即表示设置了一个断点(也可以通过鼠标右键弹出菜单来加入),再次双击则取消)。然后我们点击,执行到该断点处,如图所示:
(6)我们现在先不忙着往下执行,点击菜单栏的 Peripherals->USARTs->USART 1。可以看到,有很多外设可以查看,这里我们查看的是串口1 的情况。如图所示:
(7)单击 USART1 后会在 IDE 之外出现一个如图所示的界面:
图 (a)是 STM32 的串口1的默认设置状态,从中可以看到所有与串口相关的寄存器全部在这上面表示出来了, 而且有当前串口的波特率等信息的显示。我们接着单击一下,执行完串口初始化函数, 得到了如图 3.4.8 (b)所示的串口信息。大家可以对比一下这两个图的区别,就知道在 uart_init(115200)这个函数里面大概执行了哪些操作。
通过图 (b),我们可以查看串口1 的各个寄存器设置状态,从而判断我们写的代码是否有问题,只有这里的设置正确了之后, 才有可能在硬件上正确的执行。同样这样的方法也可以适用于很多其他外设,这个读者慢慢体会吧!这一方法不论是在排错还是在编写代码的时候,都是非常有用的。
(8)然后我们继续单击按钮,一步步执行,最后就会看到在 USART #1 中打印出相关的信息,如图所示:
图中红色方框内的数据是串口1 打印出来的, 证明我们的仿真是通过的,代码运行时会在串口1不停的输出t的值,每 0.5s 执行一次。软件仿真的时间可以在 IDE 的最下面(右下角) 观看到,如图所示。并且t自增,与我们预期的一致。再次按下结束仿真。
至此,我们软件仿真就结束了,通过软件仿真,我们在 MDK5 中验证了代码的正确性,接下来我们下载代码到硬件上来真正验证一下我们的代码是否在硬件上也是可行的。
(9)首先, 我们进行软件仿真(请先确保 Options for Target→ Debug 选项卡里面已经设置为 Use Simulator )。先按开始仿真, 接着按 ,显示逻辑分析窗口,点击 Setup,点击右侧白色方框,新建两个信号 PORTB.5 和 PORTE.5,如图所示:
(10)Display Type 选择 bit,然后单击 Close 关闭该对话框,可以看到逻辑分析窗口出来了两个信号, 如图所示:
接着,点击,开始运行。运行一段时间之后,按按钮, 暂停仿真回到逻辑分析窗口,可以看到如图所示的波形:
这里注意 Gird 要调节到 0.2s 左右比较合适, 可以通过 Zoom 里面的 In 按钮来放大波形, 通过 Out 按钮来缩小波形,或者按 All 显示全部波形。从上图中可以看到 PORTB.5 和 PORTE.5 交替输出, 周期可以通过中间那根红线来测量。至此,我们的软件仿真已经顺利通过。