工具下载

  链接: https://pan.baidu.com/s/1aHvRHZYCm2CHpCSNfZZIdg?pwd=nsei
   提取码:nsei

一、安装USB转串口驱动

   如果USB转串口驱动安装成功,USB线跟板子连接没有问题,在计算机->管理->设备管理器->端口中可识别到串口。
  在这里插入图片描述

二、硬件连接

   用USB线连接电脑和开发板的USB转串口接口:USB TO UART,给开发板上电。。
  在这里插入图片描述

三、开始下载

   1、使用mcuisp工具下载

     打开mcuisp软件,配置如下:
       ①搜索串口,设置波特率115200(尽量不要设置的太高) 、
       ②选择要下载的HEX文件、
       ③校验、编程后执行、
       ④DTR低电平复位,RTS高电平进入bootloader(上位机软件为232逻辑电平标准)、
       ⑤开始编程。如果出现一直连接的情况,按一下开发板的复位键即可。
      在这里插入图片描述
     下载成功后图示:
      在这里插入图片描述

   2、使用FlyMcu工具下载

     打开FlyMcu软件,具体配置如下:
       ①搜索串口,设置波特率为76800(不要超过115200)、
       ②选择要下载的HEX文件、
       ③校验、编程后执行、
       ④DTR低电平复位,RTS高电平进入bootloader(上位机软件为232逻辑电平标准)、
       ⑤开始编程、⑥选项字节的勾去掉,如果勾选上则下载程序后不能自动运行。
      在这里插入图片描述

四、单片机的三种烧录模式

  ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。
  ISP:使用引导程序(Bootload)加上外围UART/USB等接口进行烧录。(本章使用)
  IAP:软件自身实现在线电擦除和编程的方法,不使用任何工具。程序通常分成两块,分别为引导程序和应用程序。

五、串口调试

   使用串口(USART)打印调试信息,通过串口调试助手显示调试信息,比如,定义一个变量a,通过printf打印a的值,直接打印当然是不行的,因为printf默认输出到控制台,所以要进行串口重定向。

	#include <stdio.h>
	 
	int fputc(int ch, FILE * f)
	{
		HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,1000);
		return ch;
	}

   除了串口重定向,我们也可以自己封装一个串口的printf函数。

	#include <stdarg.h>
	 
	void Serial_SendString(char *String)
	{
		uint8_t i;
		for (i = 0; String[i] != '\0'; i ++)
		{
			HAL_UART_Transmit(&huart1,(uint8_t *)&String[i],1,1000);
		}
	} 
	void Serial_Printf(char *format, ...) 
	{
		char String[100];
		va_list arg;
		va_start(arg, format);
		vsprintf(String, format, arg);
		va_end(arg);
		Serial_SendString(String);
	}

   通过三种方法,打印输出a的值。

	  int a = 100;
	  printf("a:%d\r\n",a);
	  
	  char array[100] = {0};
	  sprintf(array,"a:%d\r\n",a);
	  Serial_SendString(array);
	  
	  Serial_Printf("a:%d\r\n",a);
串口调试助手上显示的信息

  在这里插入图片描述

六、显示屏调试

   还可以通过显示屏显示调试信息,例如,利用0.96寸的OLED12864显示GPIOA端口的值。
     OLED_Printf(0,0,OLED_8X16,“GPIOA:%x”,GPIOA->ODR);
     OLED_Update();
    在这里插入图片描述

七、Keil软件仿真

   通过Keil的软件仿真功能,在Keil上仿真STM32。

   1、配置调试参数

    在这里插入图片描述

   2、调试模式

     点击Debug,进入调试模式。
    在这里插入图片描述

     在进入调试模式后,我们发现在行号的左边,有一些灰色和绿色的方块,黄色箭头和蓝色箭头。
      在这里插入图片描述
       绿色方块所在行的代码是已经执行过的代码。
       灰色方块所在行的代码是还未执行的代码。
       黄色箭头指向程序暂停处。
       蓝色箭头指向光标所在行。

   3、调试功能

    在这里插入图片描述
     ①复位。
     ②全速运行。
     ③停止。
     ④单步运行:一行一行地执行,遇到函数则进入函数内部一行一行地执行。
     ⑤一行一行地执行(不会进入函数内部)。
     ⑥跳出当前函数。
     ⑦运行到光标所在行。

   4、调试断点

     打上断点,则程序运行到断点所在行暂停(此时断点所在行的代码并没有执行)。
    在这里插入图片描述
     断点功能:
    在这里插入图片描述
     ①在光标所在行插入/删除断点。
     ②在光标所在行使能/失能断点(失能后的断点是白色的,白色的断点是无效的断点)。
     ③失能所有断点。
     ④删除所有断点。

   5、常用调试窗口

    在这里插入图片描述

     ①Command Window(命令窗口),可以通过输入一些命令完成某些功能,例如,将变量a和数组array添加到Watch1中 。
      在这里插入图片描述

     ②Disassembly Window(反汇编窗口),可以显示程序的汇编代码 。
      在这里插入图片描述

     ③Symbols Window(符号窗口),可以显示标识符在内存中的位置和类型 比如,我们在其搜索框中搜索变量i,则下方就会列出其详细信息,包括它在哪个文件中,哪个函数中 。
      在这里插入图片描述

     ④Registers Window(寄存器窗口),可以显示寄存器的内容, 操作模式以及系统和内部状态。
      在这里插入图片描述

     ⑤Call Stack Window(调用堆栈和局部变量窗口),它可以显示目前在Stack上的函数或者变量的位置/值和类型,主要还是显示局部变量 。
      在这里插入图片描述

     ⑥Watch Windows,有Watch1和Watch2,主要用来显示变量和数组或者结构体变量的值和类型,需要将其手动添加到watch窗口,才能显示(Watch窗口除了能查看变量的值,还能修改变量的值)
     添加到Watch窗口的方法:选中要添加到Watch窗口的变量,右键→Add…to…→Watch1/Watch2。
      在这里插入图片描述

     ⑦Memory Windows(内存窗口), 显示内存区域内容,可以通过右键添加到内存窗口;例如,显示数组array,一样可以修改内存中的值,还能以不同的格式显示。
    在这里插入图片描述在这里插入图片描述

     ⑧Serial Windows(串行窗口),通过USART打印的数据,会显示在串行窗口上,其作用相当于串口调试助手 。
      在这里插入图片描述

     ⑨Analysis Windows(逻辑分析仪窗口),我们可以用它来显示引脚输出的波形;例如,使用TIM2的通道1输出一个PWM波,这里需要注意,要在View菜单中勾选Periodic Window Update,不然只有在程序暂停的时候才会更新波形 滚动鼠标滚轮,可以调节波形的大小,上面的图中grid的值为0.5ms,表示一格为0.5ms;除此之外,还能通过Load和Save导入或保存波形 。

    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

     ⑩System Viewer Windows,它可以显示和修改外设寄存器的值
      在这里插入图片描述

     复位所有窗口,点击Windows菜单→Reset View to Defaults→Reset 要在软件仿真中操作外设。
      在这里插入图片描述

八、Keil硬件仿真(ST-Link)

   1、将仿真器(ST-Link)与单片机相连。

     以ST-Link为例,SWDIO与单片机的DIO相连,GND与GND相连,SWCLK接单片机的DCLK,3.3V接3.3V。
      在这里插入图片描述

   2、配置

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

   3、进入调试模式

     点击Debug,进入调试模式。
     若STM32CubeMX生成的HAL库工程无法调试,则注释HAL_Init中HAL_MspInit中的__HAL_RCC_PWR_CLK_ENABLE和__HAL_AFIO_REMAP_SWJ_NOJTAG后可以正常进行调试。(在stm32f1xx_hal_msp.c文件中)。
      在这里插入图片描述

     注释这两行代码后即可正常调试。

     硬件仿真和软件仿真的使用方法基本相同,除了逻辑分析仪(Analysis Windows)和串行窗口(Serial Windows)硬件仿真无法使用外,其他功能基本和软件仿真相同。

九、Keil硬件仿真(DAP)

   1、仿真器简介

     本书配套的仿真器为Fire-Debugger,遵循ARM公司的CMSIS-DAP标准,支持所有基于Cortex-M内核的单片机,常见的M3、M4和M7都可以完美支持。
     Fire-Debugger支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN10这四个操作系统,免驱,不需要安装驱动即可使用,支持KEIL和IAR直接下载,非常方便。

   2、硬件连接

     把仿真器用USB线连接电脑,如果仿真器的灯亮则表示正常,可以使用。然后把仿真器的另外一端连接到开发板,给开发板上电,然后就可以通过软件KEIL或者IAR给开发板下载程序。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

   3、仿真器配置

     在仿真器连接好电脑和开发板且开发板供电正常的情况下,打开编译软件KEIL,在魔术棒选项卡里面选择仿真器的型号,具体过程看图示:

     1. Debug选项配置

      在这里插入图片描述

     2. Utilities选项配置

      在这里插入图片描述

     3. Debug Settings 选项配置

      在这里插入图片描述

     注意:

       上面,CMSIS-DAP Adapter一栏下面显示的型号和Serial No里显示的和视频如果有差异没有关系,能识别到仿真器和板子就行。
       底下,Reset一栏如果没有Autodetect选项,可以选择SYSRESETREQ;如果使用的是普通DAP下载器,Connect一栏先选择:under Reset。

   4、选择目标板

    选择目标板,具体选择多大的FLASH要根据板子上的芯片型号决定。
    野火STM32开发板的配置是:F1选512K,F4选1M。这里面有个小技巧就是把Reset and Run也勾选上,这样程序下载完之后就会自动运行,否则需要手动复位。擦除的FLASH大小选择Sectors即可,不要选择Full Chip,不然下载会比较慢。
    在这里插入图片描述

   5、下载程序

     如果前面步骤都成功了,接下来就可以把编译好的程序下载到开发板上运行。
    下载程序不需要其他额外的软件,直接点击KEIL中的LOAD按钮即可。
      在这里插入图片描述

     程序下载后,Build Output选项卡如果打印出 Application running…则表示程序下载成功。
    如果没有出现实验现象,按复位键试试。
      在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐