一直用的好好的 ,突然st-link不能用了,出现下边这个情况,上网一查很多人都有这个问题,就研究了下。
注意:因为是一直可以使用,所以这里不再赘述是否没有驱动的问题,这其实应是第一步检查的。
首先应排除硬件问题,若使用为台式机,可以试试使用背部面板USB口。
然后就是降低传输速率,确认使用下载方式正确。
还是不可以,可以按照以下步骤检查。
1.首先先检查连线,然后检查keil下载配置(这里不再赘述,参见另一篇博文《keil下载配置》)
2.还是不行的话,就试试下边的方法
首先,翻译下错误:internal command error 内部命令错误
找了几种方法都是可以的。原理其实差不多,根据自己情况判断用那个吧!
1、原因是:芯片处于休眠的状态,解决办法是使目标板退出休眠,即按住reset键再下载程序,看到USB通讯灯闪后一小会儿(自己把握)后放开reset就能看到程序下载进去了,不行就多试几次,成功一次后面就正常了(有时还是不行,方法记住,多试几次吧1)
2、只是想下载的话,你可以把BOOT0接高电平,这样直接点击load就可以下载了
3、必须先连接ST-LINK2与电脑,再给目标板上电,才可以使用,否则,如果是先给目标板上电后连接ST-LINK2与电脑,就会提示“No Device Connected”;
有时也会出现这种情况:一直正常使用,也没有给目标板断电,偶尔就会“No Device Connected”,此时你就需要断电,断开ST-LINK2与电脑的连接,再连上ST-LINK2与电脑,然后再上电,这样才可以继续使用
4、ST-LINK2有时会出现问题,换JLINK试试,速度和方便程度都不是可以比较的(还是JLINK比较好用,一般调试可以用)
关键字:Keil MDK st-link
引用地址:
Keil MDK使用第5篇---解决st-link 不能用状态
推荐阅读最新更新时间:2024-11-05 19:08
KEIL C51 中 C语言加入汇编语言的使用方法
1.通过使用预处理指令#asm 和#endasm来使用汇编语言。用户编写的汇编语言可以紧跟在#asm之后,而在#endasm之前结束。如下所示: # asm /*汇编源程序*/ # endasm 在#asm和#endasm之间的语句将作为汇编语言的语句输出到由编译器产生的汇编语言文件中。 2.通过使用预处理指令# pragma asm和函数_asm()来使用汇编语言。在程序的开头加上预处理指令#pragma asm,在该预处理指令之前只能有注释和其它预处理指令。 _asm()函数可按以下方式使用。 _asm(汇编语言字符串) 在汇编语言字符串中,可以通过回车和换行符把各个语句分开。
[单片机]
keil c51的内部RAM(idata)动态内存管理程序
程序比较简单,但感觉比较有意思,个人认为有一定应用价值,希望大家有更好的思路和方法,互相促进。 程序的基本思路是:在CPU堆栈指针SP以上的RAM区域,通过把堆栈指针SP上移若干个字节,把空出的RAM区域供用户使用,当用户在使用完后又可以把该RAM区域释放。 头文件dmalloc51.h /* ********************************************************************************************************* * C51内部RAM动态内存申请函数 ,动态内存释放函数 * (c)
[单片机]
利用ST-LINK配合ST-LINK Utility 将bin文件下载到STM32的FLASH中
背景 项目需求,要把字模文件导入到32中FLASH的指定地址,使用了ST-LINK V2 连接单片机和计算机,然后通过ST-LINK Utility 软件的配合将弄好的字模bin文件导入到FLASH指定地址。下面记录一下整个过程: 1.连接ST-LINK V2与单片机 博主的只需要连接4个线即可: VDD GND SWCLK SWDIO 2.配置工程 然后打开工程,进行配置,选择ST-Link Debugger 然后查看是否检测到ST-Link(选择SW) 如果你的可以显示如图内容,那么就成功连接了。 3.配置ST-LINK Utility 打开软件后的界面如示: 点击蓝色的球,打开设置界面,设置Por
[单片机]
51单片机KEIL如何建立多个C文件及注意事项
1如何建立多个C文件 首先,我们需要一个新文档,这个文档的建立有两种方法(以delay1s函数为例)。第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h。因为都是同编码的所以不会出现乱 码,然后在工程中将其打开。第二种方法是直接在工程中新建一个文档,然后保存的时候将名字保存为delay1s.h即可。如果是需要添加很多文件的话建议使用第一种方法,这是个人建议。其 次,我们需要编写delay1s.h这个文件的内容,其内容如下: #ifndef _DELAY1S_H_ #define _DELAY1S_H_ void delay1s();//延时函数 #endif 这个是头文件的定义,作用是声明了de
[单片机]
在Keil4中建立基于V3.4.0固件库的STM32工程
几个月前刚接触STM32时,第一感觉就是固件库里的文件又多又深,还好发现固件库里自带有范例文件,但是它们全都是针对特定的评估板的,手头只有一块STM MCU 3 in 1 MiniKit。虽说作些修改就可为我所用,可对于像我这样还没入门的菜鸟,知道要如何修改,并且编译通过,却是非常困难。 昨晚闲暇,在网上找了一些资料,自己也学着新建了一个工程。今天写下来,顺带温故一遍。 首先介绍一下操作环境: Keil版本: μVision 4.1.0 STM32固件库版本: V3.4.0 第一步,建立工程文件夹,在其子文件夹内拷贝并整理好相应的文件。 1.1、建立工程文件夹,将它命名为 Sys
[单片机]
Keil教程(二)
Keil 的调试命令、在线汇编与断点设置 上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。 一、常用调试命令 在对工程成功地进行汇编、连接以后,按 Ctrl+F5 或者使用菜单 Debug- Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真
[单片机]
keil编译出错关于__use_no_semihosting_swi的使用
__use_no_semihosting_swi,即不使用半主机模式,防止程序进入软件中断。 1.在嵌入式程序编译时如果出现printf、fopen、fclose等文件操作,因程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中: #pragma import(__use_no_semihosting_swi) #pragma import(_main_redirection) const char __stdin_name ;
[单片机]
详解startup_M051.s
在Keil新建的所有工程中,毫无例外地都包含startup_M051.s,如图19.1-1。 图19.1-1 startup_M051.s 该文件主要作用于上电时初始化单片机的硬件堆栈、初始化RAM、分配内存空间和跳转到主函数即main函数。硬件堆栈是用来存放函数调用地址、变量和寄存器值的;分配内存空间为异常提供更加快速的访问,减少中断延迟。如果不加载该startup_M051.s文件,编译的代码可能会使单片机不能正常工作。 那么什么是堆栈呢?在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈这两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进
[单片机]