错误如http://www.amobbs.com/forum.php?mod=viewthread&tid=4075329
错误图片如下:
我的解决办法:
发现RESET一直在1V附近,将RESET处的下拉电容换掉后第一个错误没有,但是跳出下面的错误:No Cortex-M Device found in JTAG chain。
解决办法:发现JTAG线没插上,插上就好了。
http://no001.blog.51cto.com/1142339/857117
网上的解决办法:
1 我遇到这个问题的原因是Boot1没接地,所以可以考虑下是否是硬件的原因
2 如果MCU出于reset状态,也会出现这种情况。我的火牛板子,应为串口上有个复位的跳线被我端接后,一直不正常,拔掉就OK了!
3 我试过以前正常的板和程序,现在均有问题,也看过了编译选项,有选的,不过换成MDK4.10就正常了,原因不了解
4 上面写的清楚啊,reset接地了。或者是编译选项里你没选器件?或者是下载选项里没选器件?
5 原子告诉我吧BOOT0设置为1,下载程序,再恢复BOOT0为0,之后就能用了。
6 体现象是,可以下载,但是一运行就没办法中断,系统的提示跟楼主的一样。一开始以为是硬件或者ULink调试器设置的问题,查了很久,最后发现确实是主频过高。因为ST的例子代码,默认是8M晶振,锁相环9倍,结果我外部是25M晶振,就变成了25×9=225M!不知道什么原因,不过把频率改了,暂时没出现问题。
7 In my own experience I have usually seen this error when either the ULINK2 is disconnected and reconnected while in the middle of a debug session or if you have some external hardware, outside of the control of the debugger, that is acting on your processor.
If the ULINK2 was disconnected mid-debug, then usually cycling power to your device will fix the problem.
If you have something like a watchdog timer that is trying to reset the processor while you are in the middle of debugging, then you will have to disable the watchdog before you can start a debug session
关键字:MDK调试 STM32
引用地址:
在MDK调试STM32出现“could not stop cortex-m device”解决办法
推荐阅读最新更新时间:2024-03-16 14:36
STM32—PID控制在直流电机中的应用
一.PID控制算法 1.什么是PID PID:Proportion-Integral-Differential 在过程控制中,我们经常使用的一种算法就是PID算法了,所谓PID控制算法就是对偏差进行比例、积分、微分控制,来使偏差趋于某一固定的值,PID核心由三个单元组成:比例单元(P)、积分单元(I)、微分单元(D),PID实际上就是误差控制。 PID控制系统(模拟)的框图如下: 2.PID系数的理解 理解PID的三个系数,可以结合PID调节时候的响应曲线,要使实际中的响应曲线趋近于理想状态下的响应曲线,无非就是三点灵魂:快速(P)、准确(I)、稳定(D),要想控制的变量保持在完美的状态,这三个灵魂就必须调整好。
[单片机]
STM32 USB DFU设备固件升级 工程讲解
说到STM32 USB的UDF,其实就是我们常说的IAP(In Application Programming)在应用编程。IAP有很多方法,我之前就用过串口IAP,网络IAP。而这里我们使用的是USB IAP,就是通过USB更新代码。所以这里有必要线了解IAP。 IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,
[单片机]
STM32 时钟树及SystemInit()函数理解
一、时钟树和时钟源: 图一 STM32时钟树 图一说明了STM32的时钟走向,从图的左边开始,从时钟源一步步分配到外设时钟。 STM32有以下4个时钟源: 1)高速外部时钟(HSE):外部晶振作为时钟源,晶振频率可取范围为4~16MHz,一般采用8MHz的晶振。 2)低速外部时钟(LSE):外部晶振作为时钟源,一般采用32.768kHz晶振,主要提供给实时时钟模块(RTC)。 3)高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,但不稳定。 4)低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块(RTC),频率大约在40kHz。 以最常见的高速外部时钟(HSE)为例
[单片机]
STM32 UART的使用过程
1、使用UART前必须启动相应的外设时钟,其主要用到固件库的RCC_APBnPeriphClockCmd函数。 使能UART1:使用RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE) 使能UART2:使用RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE) 2、使用中断进行UART操作的需要配置NVIC,设置中断优先级。如: /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
[单片机]
STM32使用DMA从串口读可变长度数据到内存
首先要解决DMA怎么知道要接收的数据何时开始,何时结束的问题。而且每次传输完数据,要改变下一次数据长度。 如果把DMA设成循环模式肯定是不行的,所以把DMA设置成正常模式。 STM32的串口有监测总线是否处于空闲的功能,我们可以使用这个功能,当数据传输完总线变成空闲状态时产生中断,来对收到的数据进行处理。因此整个过程就变成:当一堆数据开始传输,DMA默默地把数据搬运到内存中,当这堆数据传输完成,总线变成空闲状态时,马上产生中断,在中断服务程序中去做相应处理。 初始化程序: #define DMA_Rec_Len 10 //数据缓冲区大小 u8 value ; void uart_init_DMA_IN(u32
[单片机]
STM32芯片的那些系统级复位功能
我们知道,STM32芯片里有很多系统级的复位,比方上电复位、欠压复位、看门狗复位、软件复位、复位脚电平触发复位等等。这些系统级的复位往往都是针对整个芯片或芯片的绝大部分区域。 其实,我们在实际应用中有时候可能并不需要、甚至不接受总是对整个芯片做大面积的复位。正因为如此,STM32的芯片里除了具备那些系统级复位功能外,还针对各个外设设计了复位功能,即我们可以只需针对某特定外设或特定区域做复位而不影响其它。特定区域一般是指某一块总线驱动的外设集,比方挂在APB1总线的所有外设。 或许有人不了解、或者说没有使用过针对特定外设复位的功能,这里就简单介绍下,抛砖引玉。在STM32各个系列的参考手册里的RCC章节,有关于对外设或局部外
[单片机]
关于stm32定时器的理解
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 表面意思是输出控制极性为高,但是意思是定时器输入0,不反相,输出0; 输出控制极性为低,定时器输入0,反相输出1; CC1E控制开关。 #define TIM_OCPolarity_High ((uint16_t)0x0000) #define TIM_OCPolarity_Low ((uint16_t)0x0002) 定时器通道写法: TIM_OC2 意思是定时器channel 2 ,TIM_OC1意思是定时器通道1. //小波Linux pwm占空比: TIM_Se
[单片机]
STM32开发者社区:从这里开启你的STM32之旅!小白和PRO都友好
当面对STM32Cube生态系统这样一个庞大而丰富的开发世界时,工程师难免会产生疑问,从哪里开始才好? ST的许多合作伙伴和客户都希望有更多的产品能够利用STM32Cube开发环境。开发人员很享受开发环境的图形用户界面和工具的易用性,如STM32CubeMX、免费的STM32CubeIDE以及许多软件包、驱动程序和中间件,这些都有助于更快地将产品推向市场。随着越来越多的企业选择ST的产品,越来越多的工程师在ST的生态系统中迈出了第一步。为了降低开发人员的进入门槛,ST推出了STM32开发者社区。开发者社区如何为开发团队提供帮助,ST如何将STM32生态系统整合在一起?让我们详细聊聊。 STM32开发者社区 为开
[单片机]