文章目录
- 0. 一些不错的学习平台&工具
- 1. keil MDK - 基于 ARM 内核的单片机开发软件
- 2. STC-ISP - STC芯片烧录/代码编写工具
- 3. SecureCRT - 串口终端仿真软件
- 4. MProg - EEPROM编程器
- 5. RS485(Modbus协议)调试软件
- 6. SEGGER J-Flash ARM - J-Link程序烧录工具
- 7. CAD
- 8. STM32芯片Hex文件烧录器(脱机)
- 9. CAM350 —— Gerber 软件
- 10. PCB特征阻抗计算工具 —— Polar si9000
- 11. FPGA开发工具——Quartus II
- 12. 串口调试助手 - SSCOM
- 13. 电子元器件规格书相关
- 14. 汇总常用的各种硬件接口/端口及各个引脚代表的含义
- 15. 芯片丝印反查
- 16. 正点原子手持数字示波器DS100
- 17. Gitcode
- 18. 虚拟机 - VMware
- 19. 树莓派安装Ubuntu 系统
- 20. 百度网盘闲置带宽优化下载速率
- 21. FT 串口软件 - FTDI - FT_Prog
- *. 参考&收藏
0. 一些不错的学习平台&工具
- 中国大学MOOC
- 万能的B 站
- STM32 MCU开发者社区
- CSDN 极术社区
- CSDN 社区
- STC 官网
- Digi-Key 得捷电子论坛
- 正点原子资料汇总
- 原子哥视频平台
- PCB 联盟网
- 凡亿PCB
- 在线仿真网站
- 单位转换在线网站
- 公式编辑器Mathtype 中文站
- 云IDE
- telesky
- 悟空云-在线CAD
- ADI 电气工程术语表
- 电子书 The Art of Electronics
- 电子书搜索平台:熊猫搜索导航
- 得捷中国官网
- 汇川技术星球
- 编程相关工具:
- 代码编辑器:JetBrains Fleet
- 代码AI 助手:豆包MarsCode - 编程助手,支持VSCode和JetBrains;
1. keil MDK - 基于 ARM 内核的单片机开发软件
1.1 安装与配置
参考:https://blog.csdn.net/ChenGuiGan/article/details/80218875
pj software
安装时的几个注意事项:
- 安装路径要是全英文
- 多个Keil 版本(如MDK、C51) 不要安装在同一个路径上
- 百度下载keil zhucheji(见上 pj software 链接🔗);
- 右击管理员身份打开安装好的 keil - File - LicenseManagement - 复制 CID 序列号;
- 打开keil zhucheji,把复制的序列号粘贴到CID 中,Target 选
ARM
,下拉选择MDK Professional,点Generate,复制生成的序列号;
若出现报错
..\OBJ\RS485.axf: error: L6047U: The size of this image (33920 bytes) exceeds the maximum allowed for this version of the linker
是没pj 成功,换个对应版本的pj 软件试一试;
5. 回到keil,把复制的序列号粘贴到LIC 区域,点Add LIC;
6. 芯片对应支持包的安装(芯片包):
- 方法一:回到keil 界面,点击pack installer,直接安装对应的STM32 芯片包;
- 方法二:若上部没显示STM32 的包或连不上网络,可到官网 https://www.keil.com/dd2/ - Software Packs 下载;
找到对应芯片包下载安装,如STM32F103ZE;
点击Download;
以上建议复制下载链接到迅雷下载
双击安装,或在keil的Pack Installer中点击File - Import进行包导入;
安装完成后,返回keil5 MDK中的device页面查看是否安装成功;
STM32H7系列 Pack:Keil STM32H7系列芯片Pack 包
1.2 新建工程
参考:使用MDK5创建Cortex-M应用指南-中文版
详见开发指南:新建基于固件库的 RVMDK 工程模板
一节。
1.2.1 在keil中新建工程
在Keil中新建一个工程,选择STM32芯片
1.2.2 配置工程文件夹
当然,可以直接复制开发板附送的工程模板进行使用。
-
在工程目录下面,新建 3 个文件夹 CORE, OBJ、STM32F10x_FWLib. 其中:
- CORE 用来存放核心文件和启动文件。
- OBJ 是用来存放编译过程文件以及 hex 文件。
- STM32F10x_FWLib 文件夹用来存放 ST 官方提供的库函数源码文件。
- 已有的 USER 目录除了用来放工程文件外,还用来存放主函数文件 main.c,以及其他包括 system_stm32f10x.c 等等。
-
将官方的固件库包里的源码文件复制到工程目录文件夹下面。打开官方固件库包,定位到之前准备好的固件库包的目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,将目录下面的 src,inc 文件夹复制到刚才建立的 STM32F10x_FWLib 文件夹下面。其中src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件。
-
将固件库包里面相关的启动文件复制到工程目录 CORE文件夹下。打开官方固件库包,定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 中,将文件 core_cm3.c和文件 core_cm3.h 复制到 CORE 文件夹中 。 然 后 定 位 到 目 录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下面,将里面的startup_stm32f10x_hd.s (根据不同芯片选择)文件复制到 CORE 文件夹中。
不同容量的芯片使用不同的启动文件,比如芯片 STM32F103ZET6 是大容量芯片,所以选择启动文件startup_stm32f10x_hd.s。
- 定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个 文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。
1.2.3 在Keil中配置工程文件
- 新建Keil工程后,点击菜单栏上的品字图标(Manage Components),Project Targets 一栏,将 Target 名字修改为项目名,然后在 Groups 一栏删掉一个 Source Group1,分别建立USER,CORE,FWLIB. 点击 OK.
- 往 Group 里面添加需要的文件。 选择需要添加文件的 Group,这里第一步选 择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定位到刚才建立的目录STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close. 可以看到 Files 列表下面包含已添加的文件。
注:对于工程代码,如果只用到了其中的某个外设,可以不用添加没有用到的外设的库文件。比如只用 GPIO,可以只用添加 stm32f10x_gpio.c 而其他的可以不用添加。否则工程太大,编译起来速度慢。
-
用同样的方法,将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s,USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c.
-
配置头文件文件夹路径。点击菜单栏的魔术棒(Option for target),选择c/c++选项,点击 Include Paths右边的…按钮。弹出一个添加 path 的对话框,然后我们将头文件目录添加进去。
注意,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path 一定要定位到最后一级子目录。
1.2.4 其他配置
- 在编译之前首先要选择编译中间文件编译后的存放目录。点击魔术棒,选择“Output”选项下面的“Select folder for objects…”,选择目录为上面新建的 OBJ 目录。
- 库函数在配置和选择外设的时候通过宏定义来选择的,所以需要配置一个全局的宏定义变量。同样点击魔术棒,定位到 c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”(视芯片而定)到 Define 输入框里。
注:如果用的是中容量芯片那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD.
*(H7) 创建工程文件夹
工程文件夹内的内容可参考下图创建,其中User-bsp文件夹中是开发板各个外设的驱动,segger文件夹是硬件异常分析代码。
*(H7) 创建新工程
打开MDK,选择 Project ->New uVision Project-选择工程路径-填写工程名-保存。
选择芯片
设置工程名和工程分组:Project-Manage-Project Items
创建工程分组
*(H7) 添加工程文件
其中最左边Project Targets为工程分组,修改其内容即可修改工程名字。
工程–>功能代码分组–>代码源文件。
如在各工程分组中添加以下代码文件
bsp.c 位于路径\User\bsp,主要用于 MPU、Cache、时钟和外设初始化。
bsp.h 位于路径\User\bsp,此文件是各种头文件的集中汇总贴,方便管理。
bsp_led.c 位于路径\User\bsp\src,用于 LED 驱动。
bsp_key.c 位于路径\User\bsp\src,用于按键驱动。
bsp_timer.c 位于路径\User\bsp\src,用于软件定时器组和微妙级单次延迟。
bsp_fmc_io.c 位于路径\User\bsp\src,用于 IO 扩展,这里 LED 要用到。
bsp_uart_fifo.c 位于路径\User\bsp\src,用于 8 串口 FIFO 驱动。
stm32h7xx_it.c 位于路径 User\bsp,用于部分系统中断服务程序。
startup_stm32h743xx.s 位于路径\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates\arm,主要用于堆和栈空间设置,中断向量表也在这个文件。
stm32h7xx_hal_conf.h 位于路径\User\bsp,主要用于 HAL 库的配置。
其它文件路径:\Libraries\STM32H7xx_HAL_Driver\Src,用到什么外设添加什么驱动文件即可,有些外设驱动跟 DMA 也有关联,直接添加进来即可。
system_stm32h7xx.c 位于路径\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates,主要用于复位 RCC 相关寄存器和中断向量表位置设置。
这两个文件位于路径:\User\segger\HardFaultHandlerMDK,主要用于硬件异常分析。
1.3 常用设置
1.3.1 多核并行编译
Edit --> Configuration --> Other
1.3.2 字体设置
Edit --> Configuration --> Editor --> 选择简体中文
在Colors & Fonts中可选择对应的字体。
1.3.3 语法提示
Edit --> Configuration --> Text Completion --> 勾选 Symbols after 3 characters
注意:需要在工程(Project)中才能实现代码补全功能,要对工程先编译一遍;
1.3.4 护眼主题
Edit --> Configuration --> color&fonts —> 左边Windows 中选择C/C++ Editor files 一项 --> 右边Element 中选择Text --> 再右边选择background --> 将除 Matching Braces 和 Incomplete String 以外的色调设置为84 饱和度设置为91 亮度为205;
1.3.5 复位窗体默认布置
把所有窗体布置恢复成默认模式;
菜单栏 - Window - Reset View to Defaults;
1.3.6 规定tab 缩进格式与显示空格与缩进
edit - Configuration - Editor:勾选View White Space,C/C++ Files 中的Tab Size 改为4;
1.4 Configuration选项卡简介
1.4.1 解决中文乱码
Edit - Configuration - Editor - Encoding,选择Chinese GB2312
1.5 驱动安装、配置、程序烧录下载与常见问题
STM32的3种烧录模式:
1.5.1 JLNK一般配置与常见问题
- project --> option for target --> Debug
- 其中图三中的程序算法选择芯片对应的算法;
- 图二HW为J-Link版本号
图2中
SW Devices
需要Jlink连接单片机方可搜索得到
-
配置使用Jlink 作为下载器:
-
JLINK JTAG 转SWD 接口介绍:
JLINK固件,JLINK驱动和JLINK硬件版本之间的关系,以及固件升级方法
JLINK 无法下载解决思路以及常见问题整理
1.5.2 JLINK 驱动安装
对于新型芯片,务必使用JLINK V9、V10;
登录SEGGER官网JLINK驱动下载页面下载最新JLINK驱动并进行安装;
安装完成后,插上JLINK并打开电脑的设备管理器,查看电脑端是否能识别出JLINK,若JLINK灯一直闪,表示驱动没有安装成功,若不闪表示安装成功;
1.5.3 CH340驱动安装(RS232转USB芯片)
CH340/CH341的USB转串口WINDOWS驱动程序的安装包,支持32/64位 Windows 10/8.1/8/7
安装成功后,插上RS232转USB线到电脑并打开电脑的设备管理器,查看电脑端是否能识别出来;
1.5.4 【异常】芯片被锁程序不能烧录
芯片被锁的现象是下载器/仿真器搜索不到芯片,程序不能正常烧录到MCU中:
解决方法:单片机上电,按住MCU的复位按钮,在Keil中点击程序下载按钮,弹出下面提示框提示说检测到被读/写保护的芯片,点No,然后松开复位按钮
1.5.5 【异常】开发板例程下载后程序不能烧录
对于一些开发板附送的例程,在烧录后会导致其他程序不能继续烧录到单片机中(异常如上图所述),这时只需重新解压例程,在 Utilities 中选择Jlink 作为烧录器,
选择Jlink 烧录器,点击setting 进入
然后会弹出以下选项,点ok
搜索你的单片机型号,点ok即可
此时单片机即可与Jlink 通信成功
1.5.6 使用J-Flash ARM 软件下载程序
安装JLink 驱动后, 在左下角windows 图标找到 SEGGER - J-Flash ARM 软件打开
电脑连接上JLink 和MCU 芯片,点击Target - Connect,连接电脑与MCU
点击File - Open data file,加载需要烧录的烧录文件(如 .hex 格式文件)后,会弹出一个解析烧录文件的窗口
点击Target - Program 将烧录软件烧录到MCU,直到弹出以下窗口表示烧录成功
1.5.7 .bin
文件生成
如下图,进入设置;
选中User
选项卡,如下图输入代码,点ok,重新编译即可生成.bin
文件
fromelf.exe --bin -o "$L@L.bin" "#L"
1.5.8 缺少ARM V5 编译器
编译报错:
解决方案:
- 在老版本keil5 安装目录下的ARM 文件夹下找到ARMCC 文件夹,或在下面链接下载:
链接:https://pan.baidu.com/s/1Y_qIDR-NIFczkmIYLuDqYg?pwd=MMDD 提取码:MMDD - 复制粘贴到新版本keil5 的ARM 文件夹下,并解压缩;
- 把这个ARMCC 的路径添加进去;
1.5.9 ST-LINK
ST-LINK相关文件路径:精英STM32F103开发板 V2-资料盘(A盘)\6,软件资料\1,软件\5,其他软件\5,其他软件\ST LINK驱动及教程
- 安装ST-LINK 驱动:64位系统安装
dpinst_amd64.exe
,32位系统安装dpinst_x86.exe
; - 安装完成后,电脑连接ST-LINK 硬件,查看设备管理器中是否能正常识别ST-LINK;
- 打开项目工程,选择ST-LINK,并进入Setting,根据实际接线,选择JTAG 或SW;
- 确保下图两个选项被选中
1.6 Bootloader程序设置
-
配置程序的ROM起始地址和占用ROM的大小,这个地址将会在程序擦除和下载时被参考到;这个IROM1也叫做中断向量表的起始地址。如果程序在 Flash 运行,则中断向量表的默认起始地址是
0x08000000
,此时需要将其改为程序的起始地址,如0x8005000
.
2.在代码初始化处添加程序对应的ROM起始地址,其应与步骤1中设置的程序起始地址一致:NVIC_SetVectorTable(NVIC_VectTab_FLASH,(0x08005000));
-
程序下载时,选择部分擦除,擦除的起始地址会参考步骤1中设置的地址;
包括其他程序烧录(如脱机烧录器)在配置时也需要选择擦除扇区来更新代码,在需要填写擦除扇区的起始地址时,填入程序的起始地址,如0x8005000 .
1.7 其他异常记录与解决方案
1.7.1 烧录程序时缺少MCU 的flash 算法
一般在 1.5.4 添加芯片包Device Pack 节中,下载并安装对应的芯片支持包后,在Keil MDK 中会自动加载出芯片对应的flash 文件。
如果不行,可以在网上把flash 文件放到文件目录:keil安装路径/ARM/Flash
,以.flm
后缀结尾的文件即为 flash 算法文件;
- 🔗下载链接:
Keil STM32H7系列芯片Pack 包
1.7.2 注释输入中文变问号
Edit --> Configuration --> Editor
1.7.3 ⚠常见编译 Warning & Error
- warning: #69-D: integer conversion resulted in truncation:变量赋值超出了变量所定义类型的最大值;
如
u8
定义的变量为8位无符号整型unsign char
,最大值为255,负值超出255则报警告;
- main.c(18): warning: #1-D: last line of file ends without a newline
main函数花括号最一行没加回车
- error:#29: expected an expression
在下图地方添加 --c99 ;
- warning: function declared implicitly
函数没在对应头文件中进行声明
1.7.4 工程打开卡死
删除DebugConfig文件夹,在重新打开工程。
1.7.5 程序下找报错 “Flash Download failed”
- 解决方法:
- 检查J-link 接线是否接错;
- 检查芯片对应的启动算法文件是否正确:
1.7.6 error: #268:declaration may not appear after executable statement in block
将报错的变量或其他部分放在函数开头。
放在函数开头。
1.7.7 退出调试报错
若在退出调试Debug 时,遇到如下报错并卡死:
解决方法:
- 先到任务管理器结束当前卡死的keil 进程;
- 再次进入程序进入调试;
- 结束调试前,先清除所有断电,再退出调试;
1.7.8 ST-LINK 闪退
- 在上述参考博客中下载文件
STLinkUSBDriver.dll
; - 打开keil5 的安装路径:Keil_v5\ARM\STLink,用下载的文件覆盖文件夹中的原文件;
1.7.9 ST-LINK 固件升级
- 若在使用ST-LINK 时,提示需要升级固件才能使用,则点击升级,点击如下图按钮;
- 如果显示如下页面,则重新插拔ST-LINK,再次电机device connect,再点yes;
- 等待固件升级完成;
升级过程中,千万不能断开 USB 线或者电脑的网络。
TODO :
1.8 使用技巧
1.8.1 在特定格式文件内搜索全部关键字内容
选中关键字 - Ctrl+F - 见下图;
1.8.2 快速跳转到指定行
Ctrl + G
1.9 Option for Target选项卡简介
Project-Option for Target
1.9.1 Target
- 软件仿真时用到的晶振频率(软件仿真问题多);
- 选择编译器;
- 微库 MicroLib,这个库针对嵌入式应用,MicroLIB 做了深度优化,比使用 C 标准库所需的 RAM 和 FLASH 空间都大大减小。比如调用:<math.h>,<stdlib.h>,<stdio.h>,<string.h>;
- 硬件浮点,根据芯片支持而选择;
- Flash的首地址,根据芯片而顶,一般首地址都是 0x0800 0000,如STM32H743XIH的FLASH大小为 0x200000,即 2MB;
- 默认的 RAM 空间选择 DTCM,首地址 0x2000 0000,大小 0x20000,即 128KB。地址 0x2400 0000,大小 0x80000,即 512KB 是 AXI SRAM 的空间。
1.9.2 Output
- 用于存放 MDK 编译过程中生成的 obj 临时文件路径,MDK 在创建的时候已经帮我们创建好文件夹Objects,这里无需修改,使用默认即可;
- Debug Information:调试信息;
- Create HEX File:是否生成 hex 文件;(生成的hex文件在工程的 Flash - obj文件夹中)
- Browse Information:是否需要 go to def 的支持,使用 HAL 库话,推荐先不要选上,因为 MDK5使用 AC5 编译 HAL 库时间比较长.
1.9.3 Listing
- 用于存放 MDK 编译过程中生成的 list 临时文件路径,MDK 在创建的时候已经帮我们创建好文件夹Listings,这里无需修改,使用默认即可;
- 是否生成*.lst 文件;
- 查看 MAP 文件的话,就全勾上;
1.9.3.1 MAP文件
如1.9.3 节所说,将生成MAP文件的配置全勾上后,点ok,然后全编译一遍,双击工程文件夹,即可查看map文件。
其中map中的一些概念如下:
- 段(section) :描述映像文件的代码和数据块。
- RO: Read-Only 的缩写,包括 RO-data(只读数据)和 RO-code(代码)。
- RW:Read-Write 的缩写,主要是 RW-data,RW-data 由程序初始化初始值。
- ZI: Zero-initialized 的缩写,主要是 ZI-data,由编译器初始化为 0。
- .text:与 RO-code 同义。
- .constdata:与 RO-data 同义。
- .bss: 与 ZI-data 同义。
- .data:与 RW-data 同义
下面简介map文件中的内容:
- Section Cross References:主要是不同文件中函数的调用关系。
如:
main.o(i.main) refers to main.o(i.PrintfLogo) for PrintfLogo
表示 main.c 文件中的 main函数调用了 PrintfLogo .
-
Removing Unused input sections from the image:主要是被删除的冗余函数,也就是添加到工程里面,但是没有调用到的那部分。
-
Image Symbol Table:Image Symbol Table 主要分为两类,分别是 Local Symbols 和 Global Symbols .
- Local Symbols:记录了用 static 声明的全局变量地址和大小,C 文件中函数的地址和用 static 声明的函数代码大小,汇编文件中的标号地址(作用域限本文件)
- Global Symbols:Global Symbols 记录了全局变量的地址和大小,C 文件中函数的地址及其代码大小,汇编文件中的
标号地址(作用域全工程)
-
Memory Map of the image:映像文件可以分为加载域(Load Region)和运行域(Execution Region)。加载域就是程序在 Flash 中的实际存储,而运行域是芯片上电后的运行状态
- 加载域(Load Region):反映了 ARM 可执行映像文件的各个段存放在存储器中的位置关系。另外映像中的入口点就是程序开始执行的位置。
- 运行域(Execution Region):反映了 ARM 可执行映像文件各个段真正执行时在存储器中的位置关系。
-
Image component sizes:显示组件的大小。
- Code (inc. Data) :显示代码占用了多少字节。 在此映像中,有 19442 字节的代码, 其中包括 1832
字节的内联数据 (inc. data),例如文字池和短字符串。 - RO Data :显示只读数据占用了多少字节(比如 const char buf[] = “123456”)。这是除 Code (inc. data) 列中包括的内联数据之外的数据。
- RW Data :显示读写数据占用了多少字节。
- ZI Data :显示零初始化的数据占用了多少字节。
- Debug :显示调试数据占用了多少字节,例如,调试输入节以及符号和字符串。
- Object Totals :显示链接到一起以生成映像的对象占用了多少字节。
- (incl. Generated):链接器会生成的映像内容,例如,交互操作中间代码。 如果 Object Totals 行包含此类型的数据,则会显示在该行中。本例中共有 1016 字节的 RO 数据,其中 32 字节是链接器生成的 RO 数据。
- (incl. Padding) :链接器根据需要插入填充,以强制字节对齐。
- Code (inc. Data) :显示代码占用了多少字节。 在此映像中,有 19442 字节的代码, 其中包括 1832
1.9.4 User
基本用不到,主要用来指定编译之前和编译之后执行的用户程序,如下图中表示在编译之后自动执行一个批处理功能用来实现 Objects 文件夹里面的 hex 文件复制到路径Project\MDK-ARM(uV5)里,方便查找。
1.9.4.1 生成 .bin
文件
再After Build/Rebuild 处勾选一个Run选项,在后面User Command处填入fromelf.exe --bin -o "$L@L.bin" "#L"
即可。生成的.bin
文件与.hex
文件同路径。
1.9.5 C/C++
- 预定义宏
USE_HAL_DRIVER 表示使用 HAL 库。
STM32H743xx 表示使用 H743 系列。 - 代码优化级别,优化等级低,方便调试,选项 One ELF Section per Function 用于删除工程中没有用到的冗余函数;
- 使用 C99 规范;
- 添加路径,把用到的头文件路径包含进来;
1.9.6 Debug
- 软件仿真;
- 硬件仿真,选择仿真调试器;
1.9.7 Utilities
主要用于编程工具选择,Update Target before Debugging 表示调试前更新芯片的程序。
1.10 仿真/调试模式
- 在工程设置里设置好芯片型号和晶振频率(软件仿真)。
-
点击魔术棒,在Debug页面选择仿真器仿真(硬件仿真),选择并设置好对应的仿真器。设置好下面的CPU DDL等参数,以设置支持对应芯片的软/硬件仿真。
-
代码编译通过并连接好仿真器后,点击调试按钮,程序下载并进入调试模式。
1.10.1 调试界面
上图图标自左到右分别为:
- Reset:CPU复位,程序回到初始状态
- Run:自动运行代码,直到遇到断点后停止
- Stop:停止运行代码
- Step:单步运行代码
- Step Over:单行运行代码
- Step Out:运行完当前函数
- Run to cursor line:运行到光标处
- Show next statement:界面跳到当前运行的代码(不运行代码)
上图红框图标自左到右分别为:
- Disassembly Window:汇编窗口,查看汇编代码。
- Call Stack Window:堆栈局部变量窗口,通过该按钮可以显示Call Stack+Locals窗口,显示当前函数的局部变量及其值。
- Watch Windows:监控窗口,将特定变量添加到该窗口,对其进行全程监控。
- Memory Windows:内存窗口,在里面输入要查看的内存地址或对某变量右击将其添加到该窗口,然后观察这一片内存的变化情况。
- Serial Windows:串口串口,类似串口调试助手,用来显示从串口打印出来的内容。
- System Analyzer Windows:逻辑分析窗口,有多个功能(如下图),一般使用第一个Logic Analyzer。通过Setup按钮添加IO口,可以观察这些IO口的电平变化情况。
注意:有说法所,要在硬件调试中使用逻辑分析窗口,需要在仿真器设置中使能 Trace Setting (如下图) 。
7. System Viewer Windows:系统查看窗口,提供各种外设寄存器的查看窗口(通过下拉选择,如下图),选择对应外设即可调出该外设的相关寄存器表,并显示这些寄存器的值。
1.10.2 参数监控界面
-
局部变量监控:该页面可查看当前运行函数的所有局部变量数值,默认以十六进制显示,右击可选择十进制显示。直接点击参数值,还可对其进行修改。
-
监控特定参数值:对某参数右击选择添加其到Watch窗口,即可对改参数进行全程监控。同样,参数值默认以十六进制显示,右击可选择十进制显示。直接点击参数值,还可对其进行修改。
1.10.3 调试时间监控
-
选择使用 仿真器 仿真,点击 Settings 进入设置界面,选择 Trace - Enable,在Core Clock中输入当前使用单片机的工作频率,然后取消勾选 Enable ,一路点击确认退出;
-
进入 debug 进入仿真,如下图,在运行延时500ms函数前时间为7.29319356秒,运行后为7.79319658秒,时间差为0.50000302秒
其他方法:单片机测量代码运行时间方法-STM32
1.11 ARM开发工具指南 - help
在搜索选项处,搜索关于Keil的使用问题,即可得到响应解决方案。
2. STC-ISP - STC芯片烧录/代码编写工具
软件可在STC官方网站中下载安装。
2.1 hex文件烧录
该软件可把hex文件烧录到STC相关芯片单片机,如果只有hex文件而缺少程序或者程序配置有故障,该软件是很好的选择;
硬件连接
PC —[1]— UART 小板(不是J-Link!) —[2]— 单片机(PCB)
[1]USB线
[2]四脚:3.3V、TMS、TCK、GND
若PC报电流过载之类的警告,改用带供电的 USBHUB 转接可解决
软件配置
选择对应单片机型号、串口号,载入hex文件,确定连接好硬件,然后点击下载程序;
- 找到串口号:PC – 设备管理器 – 端口(COM 和 LPT) – USB Serial Port(COMxx)
其中 COMxx 就是串口号- 如果没有出现
USB Serial Port(COMxx)
,那就是串口没有连接成功- 若下载过程中出现更新版本之类的错误,可能是接触不良导致,可尝试重新烧录
2.2 向Keil中添加STC51芯片包(Device)
- 关闭Keil,打开STC-ISP软件 - 选中Keil仿真设置 - 点击图中按钮
- 选择Keil的安装目录,点确定
- 打开Keil,到Device页面,下拉选择STC MCU Database,可见芯片包已完成加载
3. SecureCRT - 串口终端仿真软件
SecureCRT是一款支持SSH和串口的终端仿真程序,启动SecureCRT软件,弹出“快速连接”窗口,协议选择Serial,其他根据需要配置,然后点击连接;
3.1 在设备管理器中更改串口号
4. MProg - EEPROM编程器
4.1 给FT232R芯片烧录串口号
使用串口线连接FT232R芯片,打开软件,新建一个配置文件,配置如下,然后保存配置文件(保存后才能烧录,保存的模板配置文件后缀名为.ept
)),点击放大镜搜索串口设备(FT232R),点击闪电按钮烧录串口号;下次烧录同样的串口号,直接打开该模板配置文件即可;
若信息框显示:Number Of Programmed Devices =1,表示找到串口设备;
5. RS485(Modbus协议)调试软件
PC端须安装串口驱动CH340。
PC通过485转换器与控制单元设备连接。
如下图;
- 读单个寄存器时,填入相应的485地址(设备地址)、寄存器地址、所读寄存器个数后,点击读取,即可在寄存器值这一栏显示该寄存器地址的值。
- 写单个寄存器时,填入相应的485地址(设备地址)、寄存器地址、所写寄存器值后,点击发送,即可向设备发送相应指令。
6. SEGGER J-Flash ARM - J-Link程序烧录工具
- 完成硬件连接。PC - J-Link - 单片机。
- 打开
.hex
程序文件。
- 配置参数,Options,主要是Target Interface中J-Link连接方式和CPU中芯片内核配置。
- 连接单片机。Target - Connect.
- 擦除单片机与烧录程序。Target - Auto.
7. CAD
版本:AutoCAD 2007、ZWCAD 2023专业版
7.1 综合
7.1.1 图层管理
- AutoCAD 2007:如下图,前面的小灯泡点亮表示显示该图层,反之表示隐藏该图层;
- ZWCAD 2023专业版:格式 - 图层;
7.1.2 英制公制转换(单位设置)
工具 - 选项 - 用户系统配置 - 插入比例,将源内容和目标图形内容单位改为目标单位。
7.1.3 对象捕捉
快捷键F3
开启/关闭捕捉功能,右击下图图标可选择捕捉的对象;
7.2 打印
7.2.1 选中打印
文件 - 打印(Ctrl + P) - 选定打印机 - 打印区域选窗口,点击窗口 - 画选打印区域 - 保存或打印
7.3 标注(量尺寸)
菜单栏 - 标注 - 选择对应标注功能。(快捷键:DLI)
8. STM32芯片Hex文件烧录器(脱机)
脱机实物如下图。
8.1 Hex文件下载到脱机
打开软件DownLoader
脱机通过USB线连上电脑,软件设备处显示Downloader表示脱机与电脑连接成功,然后选择对应的STM32芯片,打开要下载到脱机的HEX文件,选择好配置参数,点击编程。
注:设置中注意选择
擦除全片
还是擦除扇区
,前者将MCU中原有的所有程序进行擦除,后者将保留MCU中原有的bootloader程序。
8.2 程序下载到MCU
使用杜邦线连接到MCU下载端口(引脚顺序依次为:3.3V,SWDIO,SWCLK,GND),此时脱机上红灯和蓝灯同时闪烁,点击脱机上的下载按钮,脱机开始下载程序(常亮红灯),程序下载完成后,常亮蓝灯。
9. CAM350 —— Gerber 软件
9.1 Gerber导出CAD DXF格式文件
- 使用CAM350打开Gerber文件,Setting - Unit 设置尺寸到毫米(mm)
- File - Export - DXF - 选择保存路径
9.2 修改显示单位
菜单栏 - setting - Unit
10. PCB特征阻抗计算工具 —— Polar si9000
11. FPGA开发工具——Quartus II
11.1 USB烧录器——USB-Blaser安装
到网上下载USB Blaster drivers
压缩包并解压保存,插上USB烧录器,到电脑设备管理器,在“通用串行软件控制器”中找到USB Blaster,右击选择“更新驱动程序”,选择“浏览我的计算机以查找驱动程序软件”,选择USB Blaster drivers
存放的路径,安装即可。
12. 串口调试助手 - SSCOM
12.1 保存窗口参数到本地
保存路径是SSCOM 所在路径,有.txt
格式
12.2 利用SSCOM 做循环测试Loop
如下图:
- 在SSCOM 的"字符串"一栏内输入要发送的指令;
- 双击"字符串"空白处可对指令名称/注释进行修改;
- 输入指令发送对顺序,0表示不发送;
- 设置好指令发送后对延时时间;
- 勾选循环发送即可;
13. 电子元器件规格书相关
13.1 术语详解
- NU:Not Use,实际应用中一般不需要,当某引脚功能需要时,根据实际情况决定其实际参数
如下图是LM5117 的广泛应用图,DEMB引脚中的R12为 NU,即不用该引脚功能时,该电阻不需要,即引脚浮空,使用时根据实际情况,使用0
Ω电阻
- left floating:浮空
- oscillation:振荡
13.2 规格书&Demo下载&参考
规格书:
Demo:
2. TI参考设计库
参考:
3. 罗姆半导体 - 电源小课堂
14. 汇总常用的各种硬件接口/端口及各个引脚代表的含义
15. 芯片丝印反查
16. 正点原子手持数字示波器DS100
17. Gitcode
17.1 新建一个代码项目并上传代码
- 点击新建项目:
- 按需填写项目信息和选择项目是否公开;
- 新建文件;
- 点击上传文件,上传代码文件;
18. 虚拟机 - VMware
安装虚拟机参考:https://blog.csdn.net/weixin_44480178/article/details/127548351…
18.1 下载与安装
- 安装;
18.2 安装ubuntu
- 到ubuntu 官网下载镜像文件
也可以到阿里巴巴开源镜像站下载:https://developer.aliyun.com/mirror/
- 创建一个新的虚拟机,选择典型安装;
- 选稍后安装操作系统;
- 如下图;
- 如下图,推荐创建到C 盘;
- 按需分配资源,推荐选择“将虚拟磁盘拆分成多个文件”;
- 创建完成后,点"CD/DVD",加载镜像,然后启动该镜像,在ubuntu 安装过程中按默认安装即可;
18.3 把VMware 虚拟机从一台电脑复制到另一台电脑
18.4 建立主机与虚拟机之间的共享文件夹
- 打开虚拟机系统,安装VMware tool;
- 虚拟机 - 设置 - 选项 - 共享文件夹 - 启用共享文件夹 - 添加共享文件夹在主机的路径(共享文件夹的名字最好是不含中文);
- 在虚拟机中挂在共享文件夹…
- 打开终端,获取管理员权限
sudo su
,跳转到共享文件夹路径cd /mnt/hgfs/共享文件夹名
,查看共享文件夹内容ls -a
;
由上面步骤知,共享文件夹在Linux 系统中的路径为/mnt/hgfs/共享文件夹名
,其具体可视化文件夹在如下位置可以找到:
拖动共享文件夹到侧边栏的New bookmarks,即可快捷访问共享文件夹;
18.5 给虚拟机扩展磁盘空间
在虚拟机关机情况下,点击:
18.6 linux 系统连接主机无线接收器(wifi)
- 配置网络适配器,使用桥接模式;
- 连接无线网络接收器;
- 使用wifi;
19. 树莓派安装Ubuntu 系统
- 硬件准备:
- 树莓派(内存最好是4G 以上)
- type-c 插头的电源(5V3A以上)
- SD卡(16G以上)
- micro-HDMI 转HDMI 线
- 支持HDMI 输入的显示器;
- 下载Ubuntu 树梅派桌面系统镜像:
清华源:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu/releases/22.04.1/release/
官方地址:https://cn.ubuntu.com/download/raspberry-pi
-
下载树莓派镜像工具(Raspberry Pi Imager):
下载地址:https://www.raspberrypi.com/software/,如果是Windows 系统就下载Windows 系统的app,是Linux 的就下载对应app,然后安装; -
打开Raspberry Pi Imager,选择存储卡(SD 卡通过读卡器连接电脑),然后按下图擦除SD 卡;
-
选择已经下载好的镜像系统:
-
点击设置进入开启SSH服务、配置用户名密码等
-
点击开始烧录
20. 百度网盘闲置带宽优化下载速率
以下设置可优化下载速率,代价是开放你家的闲置宽带给baiDu 使用;
21. FT 串口软件 - FTDI - FT_Prog
支持FT232 芯片串口配置
21.1 烧录串口名
- 串口线接入电脑,按F5 扫描出FT232芯片;
- 如下图,取消勾选Auto Generate Serial,填入要烧录的串口名;
- 点击烧录;
*. 参考&收藏
信号完整性
8位MCU项目例程
TI在线培训网站
电子和电器工程工具
在线仿真网站
TI (德州仪器)官网
罗姆半导体官网
微雪电子官网(电子模块)
标准-流程-模板