一、买到了板子,自己分析引脚功能
我在某宝上买到一块stm32f407vet6的板子,图便宜,结果遇上了个态度差的客服。没有说明,没有资料。不能退换,只能自己想办法分析引脚
在嘉里创找到了芯片原理图(LQFP-100封装),想着看走线猜引脚,结果拿着放大镜找了许久没有进展。这板子上有许多过孔,走线复杂,难以观测。之后发现板子后面有“JL-32F4xx”字样丝印,上网搜之,竟找到类似的原理图!不知是否就是,但没有别的办法,只好尝试。(原理图放在文章末尾)
有原理图,但不知对应关系。我于是用万用表从VCC和GND入手尝试,先确定了JTAG的引脚。
我使用的是Jlink,好在原理图中标名JTag和SWD兼容。之后又找到如下对应关系,接线尝试之。
JTAG和SWD(Single Wire Debug)是两种不同的调试接口,它们之间可以通过特定的方式相互转换。以下是JTAG和SWD接口的接法:
- JTAG到SWD的接法:
- JTAG的TMS脚对应SWD的SWDIO脚。
- JTAG的TCK脚对应SWD的SWCLK脚。
- 其他引脚,如TDO可以不连接,复位脚RESET和电源监测Vref可根据需要连接。
- 对于20脚的JTAG接口,TMS对应的是第7脚,TCK对应的是第9脚。1
- SWD到JTAG的接法(假设JTAG接口支持SWD模式):
- JTAG的TDO(13脚)对应SWD的SWDIO(7脚)。
- JTAG的RTCK(11脚)对应SWD的SWCLK(9脚)。
- JTAG的N/C(19脚)对应SWD的VCC(1脚)。
- JTAG的2 VCC脚对应SWD的GND(20脚)。
- JTAG的TDI(5脚)对应SWD的RESET(15脚)。2
需要注意的是,JTAG接口在使用前需要安装相应的驱动,这通常可以从官网下载。而SWD是ARM开发的一种串行线调试接口,它以其所需引线少、易排版、使用简单等优点而被广泛应用。
keil5的jlink驱动成功识别芯片
二、移植正点原子驱动到vscode
编译报错Error: #20: identifier "FMC_Bank1" is undefined
FMC_Bank1->BTCR[FMC_Bank] = 0x000030DB;
看这位大佬的博客,成功解决!
STM32F40xx搭建Keil工程编译错误(stm32f4xx_fmc.c)_..\lib\src\stm32f4xx_fmc.c(868): error: #20: ident-CSDN博客
原因:
stm32f4xx_fmc.c的在固件库中的一个外设,仅作用于STM32F429_439xx、STM32F446xx、STM32F469_479xx、STM32F427_437xx系列的芯片,如果不是这些芯片的话将不会引用stm32f4xx_fmc.h这个头文件,也就产生了宏没有定义的问题。具体的说,我们在Option for Target的C++选项卡的Define填写了当前所使用芯片的所属系列。
而这个宏在stm32f4xx_conf.h文件中进入的分支并没有引用stm32f4xx_fmc.h这个头文件。
解决:
不要再Keil的分组中添加stm32f4xx_fmc.c文件,删除后重新编译即可。
原文链接:https://blog.csdn.net/lang523493505/article/details/103769255/
三、配置jlink
基础配置看这位大佬的博文
stm32F4环境的配置固件库的安装与Jlink驱动的下载)与模板工程的创建_stm32f4固件包-CSDN博客
烧录是报错,只需要点击OK,然后在DEVICES栏目输入芯片型号,双击,一切正常
原理图:
【免费】stm32f47vet6核心板原理图资源-CSDN文库