stm32下载失败后检测不到芯片需要重新上电

stm32下载失败后检测不到芯片需要重新上电,第1张

题主是否想询问“stm32下载失败后检测不到芯片需要重新上电吗”?需要。根据相关公开信息查询显示,stm32下载失败后检测不到芯片是元器件与系统不兼容,需要重新上电进行兼容性更改即可。stm32全称是意法半导体32位系列微控制器芯片。

具体配置过程:
1、打开STM32CubeMX,并选择好相应的芯片。文中的芯片为STM32F207VCT6,选择后如下图:
2、配置RCC时钟、ETH、PA8以及使能LWIP;
由于此处我们的开发板硬件上为RMII方式,因此选择ETH-RMII,若有同志的开发板为MII方式,请参考MII的配置方法,此处只针对RMII;
RCC选择外部时钟源,另外勾选MCO1,软件会自动将PA8配置为MCO1模式,该引脚对于RMII方式很重要,用于为PHY芯片提供50MHz时钟;
使能LWIP;
3、时钟树的相关配置,必须保证MCO1输出为50Mhz,如果这个频率不对会导致PHY芯片无法工作;
我这里因为芯片为207VCT6,为了使MCO1输出为50Mhz,做了PLL倍频参数的一些调整,总体如下:(同志们配置时可根据自己的芯片灵活配置,但需保证MCO1的输出为50Mhz)
4、ETH、LWIP、RCC相关参数设置;
至此,比较重要的都在前面了,但是还有一点仍需要注意,即PA8引脚输出速度,几次不成功都是因为这个引脚没注意。
后续的参数设置可以根据同志们自己的需求分别设置,这里给出我的设置供参考;
ETH参数保持默认,但中断勾选一下;
LWIP参数设置如下:(因为我这里是配置UDP服务器,IP选择静态分配)
5、生成工程,做最后的函数修改;
给生成的工程添加UDP服务器的初始化以及端口绑定等相关函数;
我这里直接将之前的官方例程中的UDP服务器文件加进来,如下:
之后将c文件添加到用户程序,主函数添加Udp的h头文件;如下:(udp文件的具体内容在后面给出)
6、主函数还需要添加一下几个函数,在这里不对函数作用及实现原理讲解,仅做添加说明。
附:udp_echoserver相关文件内容(该文件为官方的示例程序,版权归官方,此处做转载)
udp_echoserverc的内容如下:
/ Includes ------------------------------------------------------------------/
#include "mainh"
#include "lwip/pbufh"
#include "lwip/udph"
#include "lwip/tcph"
#include <stringh>
#include <stdioh>
/ Private typedef -----------------------------------------------------------/
/ Private define ------------------------------------------------------------/
#define UDP_SERVER_PORT 7 / define the UDP local connection port /
#define UDP_CLIENT_PORT 7 / define the UDP remote connection port /
/ Private macro -------------------------------------------------------------/
/ Private variables ---------------------------------------------------------/
/ Private function prototypes -----------------------------------------------/
void udp_echoserver_receive_callback(void arg, struct udp_pcb upcb, struct pbuf p, const ip_addr_t addr, u16_t port);
/ Private functions ---------------------------------------------------------/
/
@brief Initialize the server application
@param None
@retval None
/
void udp_echoserver_init(void)
{
struct udp_pcb upcb;
err_t err;

/ Create a new UDP control block /
upcb = udp_new();

if (upcb)
{
/ Bind the upcb to the UDP_PORT port /
/ Using IP_ADDR_ANY allow the upcb to be used by any local interface /
err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);

if(err == ERR_OK)
{
/ Set a receive callback for the upcb /
udp_recv(upcb, udp_echoserver_receive_callback, NULL);
}
}
}
/
@brief This function is called when an UDP datagrm has been received on the port UDP_PORT
@param arg user supplied argument (udp_pcbrecv_arg)
@param pcb the udp_pcb which received data
@param p the packet buffer that was received
@param addr the remote IP address from which the packet was received
@param port the remote port from which the packet was received
@retval None
/
void udp_echoserver_receive_callback(void arg, struct udp_pcb upcb, struct pbuf p, const ip_addr_t addr, u16_t port)
{
/ Connect to the remote client /
udp_connect(upcb, addr, UDP_CLIENT_PORT);

/ Tell the client that we have accepted it /
udp_send(upcb, p);
/ free the UDP connection, so we can accept new clients /
udp_disconnect(upcb);
/ Free the p buffer /
pbuf_free(p);

}
udp_echoserverh的内容如下:
#ifndef __ECHO_H__
#define __ECHO_H__
void udp_echoserver_init(void);
#endif / __MINIMAL_ECHO_H /
7、至此,所有的工作完成,编译工程,下载至开发板。由于udp_echoserver中绑定的端口号为7,这里我们通过测试工具测试网络的功能,

不用安装驱动。DAP支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN10,支持KEIL和IAR直接下载,非常方便。(实际上DAP本身还支持Linux等系统,只是需要软件支持)

把DAP用USB线连接电脑,如果DAP的灯亮则表示正常,可以使用。

把仿真器的另外一端连接到开发板,给开发板上电,就可以通过软件KEIL或者IAR给开发板下载程序。

KEIL软件配置。

在DAP连接好电脑和开发板且开发板供电正常的情况下,打开编译软件KEIL,在魔术棒选项卡里面选择仿真器的型号。

点击  魔术棒->Debug页->下拉框选择CMSIS-DAP Debugger选项。

配置如图:

Debug Settings 选项配置,点击CMSIS-DAP Debugger右侧的Settings按钮,在d出的对话框中配置如下:

在Utilities页,勾选“Use Debug Driver”

选择芯片型号(若工程已配置该选项可忽略)

在Device中选择要下载的目标芯片,图中以STM32F429IGT6型号为例,请根据你自己使用的芯片选择。如果使用的是MDK5软件,可能找不到某些芯片,需要安装MDK的芯片支持包。可参考如下经验:

9MDK5 安装 破解

选择芯片的FLASH,具体选择多大的FLASH要根据板子上的芯片型号决定。例如STM32F103ZET6选512K,STM32F429IGT6选1M。这里面有个小技巧就是把Reset and Run也勾选上,这样程序下载完之后就会自动运行,否则需要手动复位。擦除的FLASH大小选择Sectors即可,不要选择Full Chip,不然下载会比较慢。

9

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

10

程序下载后,Build Output选项卡如果打印出verify OK 表示下载成功,若步骤8中有勾选Reset and run选项,还会 Application running…表示程序下载成功并运行。

如果没有出现实验现象,按复位键试试。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13382862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存