使用STLINK进行程序调试
使用STLINK进行程序调试
通过串口来调试程序,每一次改动都要重新烧录到单片机,这样不仅不灵活,而且单片机的烧录次数是有限的,这样会影响到单片机的寿命。简单的程序可以拿串口来这样玩,但复杂的这样玩就太累了。通过查阅一些资料和各位博主的指点,学会了通过STLINK进行硬件连接后在线调试。用STLINK来调试可以真实访问查看寄存器的变化,下面就以串口输出内容到上位机显示为例,讲述一下如何用STLINK来调试程序。
- 安装STLINK驱动程序。因本例程需要用到串口将内容输出到上位机,我的板子采用芯片CH340将USB转串口,所以要安装CH340 驱动。
- 建立工程,将如图文件包含到工程里
- Options for Target 选项卡在 Debug 栏选择仿真工为具 Use:ST-Link Debugger,如图依次 成4个步骤
然后点击Settting进行STLINK参数设置,我选用SW模式,JTAG占用比较多的I/O,容易影响其他外设的使用,速率不要选择太大,否则会出现问题。
接下来我们还需要在 Utilities 选项卡里面设置下载时的目标编程器
我们直接勾选 Use Debug Driver,即和调试一样,选择 ST LINK 来给目标器件的 FLASH 编程,然后点击 Settings 按钮,进入 FLASH 算法设置
这里 MDK5 会根据我们新建工程时选择的目标器件,自动设置 flash 算法。我使用的是STM32F103RCT6,FLASH 容量为 256K 字节,属于高容量系列,所以 Programming Algorithm里面默认会有 512K 型号的 STM32F10x High-density Flash 算法(注意:256K 和 512K 共用)。另外,如果这里没有 flash 算法,大家可以点击 Add 按钮,自行添加即可。最后选中 Reset and Run
选项,以实现在编程后自动启动,其他默认设置即可。 - 设置好后编写程序
void GPIO_Configuration(void)
{ GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStruct);
}void USART_Configuration(void)
{USART_InitTypeDef USART_InitStruct;USART_InitStruct.USART_BaudRate=9600;USART_InitStruct.USART_WordLength=USART_WordLength_8b ;USART_InitStruct.USART_StopBits=USART_StopBits_1;USART_InitStruct.USART_Parity=USART_Parity_No;USART_InitStruct.USART_Mode=USART_Mode_Tx |USART_Mode_Rx;USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_Init(USART1,&USART_InitStruct);USART_Cmd(USART1, ENABLE);}//---------´ò¿ªÏàÓ¦ÍâÉèʱÖÓ--------------------
void RCC_Configuration(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); //ʹÄÜAPB2ÍâÉèµÄGPIOAµÄʱÖÓRCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //ʹÄÜUSARTʱÖÓ }
void Delay_Ms(u16 time) //ÑÓʱº¯Êý
{ u16 i,j;for(i=0;i<time;i++)for(j=10000;j>0;j--);
}int main(void){ u8 i,data;RCC_Configuration();GPIO_Configuration();USART_Configuration();data='A';for(i=0;i<30;i++){while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);USART_SendData(USART1,data);data++;while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);}return(0);}
接下来将硬件连接,下载后就点击Debug后就可以实时跟踪程序,很方便的找到程序的bug。
使用STLINK进行程序调试相关推荐
- ST-LINK下载程序出现flash download failed - ‘cortex m4‘
ST-LINK下载程序出现flash download failed - 'cortex m4' 可能原因:项目测试时使用ST-link下载程序调试,之前都好好的可以下载程序,之后可能做掉电存储等一些 ...
- STM32f103调试笔记(2)——使用ST-LINK下载程序的时候,不按住复位键无法下载?
这也是很常遇见的一个问题了.使用ST-Link下载程序的时候,总是显示无法识别设备,查阅了网上的解决方法,只要按住复位键,然后点击LOAD以后迅速松开复位键就可以了.这也是一种方法啦,但是每次都要按一 ...
- Keil5 MDK版本使用ST-LINK下载程序的方法及注意事项
1.进入Keil软件打开魔法棒 2.进入调试选项页面 按照下图所示顺序选择好ST-Link Debugger后进入Settings 3.进入Settings后,在Debug选项卡里选择sw模式 完成以 ...
- java中的匿名类方法覆盖_Java技巧:用匿名类来实现简化程序调试
Java技巧:用匿名类来实现简化程序调试 在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle).但其实,它们对于debug也很有帮助.本文将 ...
- python示例异常处理与程序调试_笔记:Python异常处理与程序调试
Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...
- 如何使用日志进行程序调试_如何使用日志节省调试时间
如何使用日志进行程序调试 by Maya Gilad 通过Maya Gilad 如何使用日志节省调试时间 (How to save hours of debugging with logs) A go ...
- .net程序调试一:快速定位异常
.net程序调试一:快速定位异常 参考文章: (1).net程序调试一:快速定位异常 (2)https://www.cnblogs.com/yuilin/p/3788796.html 备忘一下.
- 调试内存_C/C++程序调试和内存检测
来源:wxquare www.cnblogs.com/wxquare/p/4840063.html 程序出现错误很正常,一个优秀的程序员必须学会调试,发现错误并改正.减少程序错误最有效的方法是:在敲代 ...
- Linux上程序调试的基石(2)--GDB
3. GDB的实现 GDB是GNU发布的一个强大的程序调试工具,用以调试C/C++程序.可以使程序员在程序运行的时候观察程序在内存/寄存器中的使用情况.它的实现也是基于ptrace系统调用来完成的. ...
最新文章
- 【计算机图形学】六面体旋转并实时切换虚线实线 - 代码实现
- 【转】Win7、Ubuntu双系统正确卸载Ubuntu系统--不错
- uniapp自定义条件编译-定制化产品
- 专业词汇---BUG部分-02
- VMware中centos6.5 minimal 使用NAT模式联网
- ArcEngine 相关-转载
- 微信小程序 editor富文本编辑器组件封装
- IDC 发布《中国视频云市场跟踪》最新报告,视频云市场将趋向何方?
- 碳化硅纳米线,SiC纳米线(SiC nanowires),SiC短纤维(SiC fiber),SiC晶须(SiC whiskers)的主要应用方向,检测XRD图谱
- 计算机应用基础系统总线,2019年自学考试计算机应用基础试题(4)
- hibernate的关联映射 (员工管理)
- 如何打开计算机无线功能灰色,计算机没有wifi,仅显示宽带连接. 右键单击灰色的无线网络连接图...
- AngelSword(天使之剑)漏洞框架的使用
- 如何躲避红蜘蛛的控制
- 海康威视E200Pro固态硬盘(联芸MAS0901)SMART信息解析
- 如何解决收到网监大队信息系统安全等级保护限期整改通知书
- 【96期】盘点那些关于Nginx的常考面试题
- C语言基础课 编写程序之编程实现在一个字符串统计各元音字母(即A,E,I,O,U)的个数,注意,字母不分大小写。例如,输入THIs is a boot,则输出应为1 0 2 2 0
- 鼎普计算机保密检查系统,敏感电子信息集中管控平台系统
- 3DS MAX 2022下载及安装教程 3dmax软件下载安装