初探STM32f407VET6

文章讲述了作者购买STM32F407开发板遇到的问题,包括客服不足、无资料分析引脚,通过查找原理图、利用JTAG和SWD接口进行调试,以及在Keil中移植正点原子驱动和配置JLink的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、买到了板子,自己分析引脚功能

我在某宝上买到一块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文库 

 

对于使用 STM32F407VET6 的 HAL 库来配置 TFT 屏幕,虽然提供的参考资料未直接涉及此主题[^1],可以基于广泛认可的最佳实践提供指导。 ### 使用 STM32F407VET6 HAL 库配置 TFT 显示屏 #### 配置硬件连接 确保 TFT 屏幕通过 SPI 或并行接口正确连接到微控制器。通常情况下,TFT 屏幕的数据线应连接至 GPIO 引脚,而控制信号(如 CS, RS, WR, RD)也需适当地映射到相应的引脚上。 #### 初始化项目环境 创建一个新的 STM32CubeIDE 工程,并选择目标设备为 STM32F407VET6。利用 STM32CubeMX 进行初步设置,包括启用必要的外设(SPI/I2C/Parallel 接口),以及安装最新的 HAL 库版本。 #### 编写初始化代码 在 `main.c` 文件中加入如下代码片段用于初始化 LCD 控制器: ```c #include "stm32f4xx_hal.h" // 假定已定义了LCD相关的GPIO和时钟资源 void MX_LCD_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用相关GPIO端口时钟 /* 设置GPIO模式 */ GPIO_InitTypeDef GPIO_InitStruct = {0}; // 根据实际连线情况调整这些参数 GPIO_InitStruct.Pin = GPIO_PIN_...; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ``` #### 实现显示功能函数 编写一系列辅助函数实现基本图形操作,比如绘制像素、线条、矩形等。这里给出一个简单的画点例子: ```c void LCD_DrawPixel(int16_t x, int16_t y, uint16_t color){ if(x >= 0 && x < LCD_WIDTH && y >= 0 && y < LCD_HEIGHT){ // 发送命令给LCD模块指定位置坐标及颜色数据... // 注意不同型号的显示屏可能有不同的通信协议细节 } } ``` #### 测试与调试 编译程序并将固件烧录到开发板上运行测试。观察屏幕是否正常工作;如果不成功,则检查硬件接线是否有误或重新审视软件逻辑是否存在缺陷。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值