关于STM32F103RET6只能下载一次程序后续再也下载不了的,拉高BOOT0能下载,再次拉低后仍然下载不了,按下复位能识别SWD,松开后识别不了的原因复盘

起因:

        最近在做一个项目时,将一份STM32F103ZET6的外设原理图与一份STM32F103RET6的原理图合并成一份新的原理图,即用RET6的芯片,外设仍然是ZET6那份里面的。

现象:

        板子焊接好后,使用SWD4芯下载程序,第一次下载成功了,但是程序没有运行,尝试debug看看程序运行情况,但却一直出错,打开后SETTINGs发现一直检测不到SWD,如下图:

采取的措施:

        之前也出现过这个问题,首先考虑是jlink接触不良,重新换了一个,并且在其他板子成功下载,说明不是jlink的原因,看了别人的原因:第一种是A13、A14被当作普通IO口使用导致下载不了,但我根本没用到这两个口,此原因排除;第二种原因是没有配置A13、A14为Serial Wire,因此专门使用STM32CubeMX来设置,设置后仍然下载不了,此原因排除;

第三种原因说是芯片读写保护,但我的程序在另一块RET6的板子上可以运行,不会造成芯片保护,此原因排除。到这里所有的矛头都指向硬件。

原因找到:

        因为是两份原理图拼在一起的,因此重新检查了一下原理图,因为两份原理图的地线标识不一样,看岔了没有及时发现,之后检查才发现芯片的地没有和电源以及下载口的地连起来,导致芯片只接了一个3.3V,飞了一根线后 可以正常下载程序。但为什么不接地第一次就可以下载呢?因为芯片内部没有程序?

因此在设计原理图的时候一定要细心!细心!再细心!尤其是拼接不熟的原理图时!

插曲:

        在没有找到芯片不接地的原因之前,还进行了其他尝试,有以下现象供参考:

1、按住复位可以检测到jlink,但是只能检测到,却不能下载程序;

2、拉高BOOT0后可以下载程序,再次拉低还是下载不了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: STM32F103RET6是一种由意法半导体公司(STMicroelectronics)生产的微控制器,它具有较高的性能和广泛的应用领域。迪文屏是一种串行显示器,通常用于在嵌入式系统中显示文本和图形。 要使用STM32F103RET6驱动迪文屏,首先需要配置MCU的GPIO引脚和串口通信。可以使用STM32CubeMX软件来生成初始化代码。在配置完毕后,需要编写一段驱动程序来控制迪文屏的显示功能。 首先,需要初始化串口通信,并设置波特率、数据位、停止位和奇偶校验等参数。然后,使用串口发送命令和数据来控制迪文屏的显示。命令可以用于设置显示模式、显示位置、背光亮度等。数据可以是要显示的字符或图形的像素信息。 为了简化驱动程序的编写,可以使用一些已经开发好的库函数。例如,HAL库是STMicroelectronics提供的一套硬件抽象层函数,可以用于快速开发STM32芯片的应用程序。通过调用库函数,可以简化串口通信和迪文屏显示的控制过程。 在编写驱动程序时,需要注意一些细节。例如,要保证串口通信的时序正确、波特率匹配,以及正确的配置GPIO引脚作为串口的发送和接收引脚。此外,还需要了解迪文屏的数据传输格式和命令集,以正确发送命令和数据。 总结来说,驱动STM32F103RET6迪文屏需要配置MCU的GPIO和串口通信,并编写驱动程序来控制迪文屏的显示。可以使用库函数来简化开发过程。但在编写驱动程序时需要注意细节,以确保正确的时序和数据传输。 ### 回答2: STM32F103RET6 是意法半导体(STMicroelectronics)公司推出的一款32位ARM Cortex-M3内核的微控制器。而“迪文屏”指的是一种液晶显示屏,通常用于嵌入式系统的显示控制。 为了在STM32F103RET6上控制迪文屏,需要编写相应的驱动程序。驱动程序主要包含以下几个方面的功能: 1. 端口初始化:设置对应端口的输入输出方向和电平状态,以及配置相关的引脚复用功能,确保迪文屏能正常连接到STM32F103RET6的对应引脚上。 2. 通信协议:选择适合的通信协议,一般采用串行通信方式进行数据传输。常用的协议有SPI(串行外设接口)和I2C(串行总线)等。根据迪文屏的型号和规格书,配置STM32F103RET6的相关寄存器以正确的实现通信。 3. 数据传输:根据迪文屏的规格和通信协议,编写相应的数据传输函数,将需要显示的数据通过通信协议传输给迪文屏。数据可以是文字、图像以及其他需要显示的内容。 4. 显示控制:根据需要,编写控制函数来控制迪文屏的显示方式,如清屏、设置显示区域、选择字体、调整亮度等。 5. 用户接口:根据系统需求,为用户提供适当的接口,以方便用户操作显示屏。可以提供一些函数,如显示字符、显示字符串、绘制图形等。 在编写迪文屏驱动程序时,重要的是阅读迪文屏的规格书,了解其通信协议和接口要求。同时,还需要查阅STM32F103RET6的参考手册,了解其GPIO、SPI或I2C等相关寄存器的使用方法。最后,通过测试和调试确保驱动程序的正确性和稳定性。 总之,编写STM32F103RET6上的迪文屏驱动程序需要对硬件和软件有深入的了解,掌握相关的编程技巧和知识,并且经验丰富的工程师可以在遇到问题时进行调试和优化。 ### 回答3: STM32F103RET6是一款ARM Cortex-M3内核的微控制器,而“迪文屏”是一种液晶显示屏。为了在STM32F103RET6上驱动迪文屏,我们需要编写相应的驱动程序。 首先,我们需要了解迪文屏的规格和连接方式。迪文屏一般使用SPI(串行外设接口)或者I2C(I²C总线)协议与微控制器进行通信。在STM32F103RET6上,我们可以利用其内部的SPI或者I2C外设来控制迪文屏。 对于SPI协议,我们需要设置STM32F103RET6的SPI外设的相关寄存器,包括通信速率、数据位长度、时钟相位和极性等。然后,我们可以通过SPI发送命令和数据给迪文屏,通过其返回值来读取屏幕上的数据。 对于I2C协议,我们需要设置STM32F103RET6的I2C外设的相关寄存器,包括通信速率、地址、传输模式等。然后,我们可以通过I2C向迪文屏发送命令和数据,并从其返回值中读取结果。 在驱动程序中,我们还需要实现一些基础函数,如初始化函数、写命令函数、写数据函数、读数据函数等。这些函数将在主程序中被调用,用于控制迪文屏的各项功能。 需要特别注意的是,迪文屏的具体操作和命令格式可能不同,因此在编写驱动程序时,我们需要参考迪文屏的技术手册或者数据手册,并根据其规格要求来编写相应的驱动程序。 总而言之,要在STM32F103RET6上驱动迪文屏,我们需要了解迪文屏的规格和连接方式,并编写相应的驱动程序,包括初始化函数和基础功能函数。以SPI或者I2C协议为例,我们需要设置相关外设的寄存器,并通过相应的协议与迪文屏进行通信,从而实现对其的控制和数据读写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜菜啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值