基于STM32从零写操作系统系列---用GDB调试LED程序

发布者:石头12345最新更新时间:2019-09-10 来源: eefocus关键字:STM32  操作系统系列  GDB调试  LED程序 手机看文章 扫描二维码
随时随地手机看文章

目的

通过调试程序,观察程序的运行情况。主要是简单介绍程序的调试方法,当然相对于一些集成开发环境,这种调试方法就显得有点落后了。由于我坚持不使用集成开发环境,所以只能这样了。


要求

安装TrueSTUDIO for STM32,这是STM32官方免费的集成开发环境。安装这个IDE的目的只有一个,就是使用它的GDBServer。


实验步骤

1.使用《基于STM32从零写操作系统系列---点亮LED灯》这篇文章的源代码。


2.下载TrueSTUDIO for STM32。


3.安装TrueSTUDIO for STM32软件。正常安装就可以,没有特别的设置。


4. 在命令行中,进入led_proj文件夹,输入make,编译项目,获得boot.out和boot.bin文件。注意,Makefile中编译代码是要添加选项-g,表示生成调试信息。如图:

5. 使用ST-Link Utility软件将boot.bin文件下载到芯片


6.退出ST-Link Utility软件。打开GDBServer软件,(如果是默认安装)路径为C:Program Files (x86)AtollicTrueSTUDIO for STM32 9.2.0ServersST-LINK_gdbserver,双击文件夹中的ST-LINK_gdbserver。注意,开发板必须上电。如图:

7.在命令行中输入如图指令,使GDB连接到目标调试设备。红色圈着的是要输入的命令,划红线的表示已经连接上了。


8.设置断点,如图,具体的GDB命令在这里不详细叙述。


9.开始调试。如图输入的命令。注意观察开发板上的led灯变化。

小结

通过调试程序,我们可以验证程序的运行逻辑是否与自己设计的一样;同时,我们还可以通过查看寄存器和内存中的数据,了解程序的运行情况和状态。建议简单学习一下GDB调试的命令。关于TrueSTUDIO for STM32这个软件,可以自己了解一下。本系列文章,不关心如何熟练使用工具。只要简单了解一些工具的操作就可以了。

关键字:STM32  操作系统系列  GDB调试  LED程序 引用地址:基于STM32从零写操作系统系列---用GDB调试LED程序

上一篇:基于STM32从零写操作系统系列---使用C语言
下一篇:基于STM32从零写操作系统系列---基于寄存器写串口驱动

推荐阅读最新更新时间:2024-10-31 05:44

STM32(Cortex-M3)中的优先级概念
STM32 (Cortex-M3) 中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据
[单片机]
stm32 hal 库读写字节代码
void Single_WriteI2C(uint8_tREG_Address,uint8_t REG_data)//写入一个字节的代码 { uint8_t TxData = {REG_Address,REG_data}; while(HAL_I2C_Master_Transmit(&hi2c1,0xa6,(uint8_t*)TxData,2,1000)!= HAL_OK) { if (HAL_I2C_GetError(&hi2c1) !=HAL_I2C_ERROR_AF) { Error_Handler(); } }
[单片机]
浅析STM32的hex文件
前段时间需要用到BIN文件 随便把HEX文件也了解了一下 参考查阅了一些网上资料,如有雷同除了巧合还有借鉴参考。。。 正题:HEX文件格式如下 0x3a 0x0d 0x0a 分析下面具体例子 :020000040800F2 : 这个就是 0x3a ,也就是冒号 02 这个就是说明这行数据区的数据内容长度,也就是数据内容为两个字节在后面的 0800 那里 0000 这个是数据要送往的地址 要看具体数据类型 04 解释整行数据的数据类型,主要有这几种 '00' Data Record 数据 '01' End of File Record 文件结束标志 '02' Extended
[单片机]
浅析<font color='red'>STM32</font>的hex文件
STM32 外部中断 易出错总结
一:触发方式 STM32的外部中断是通过边沿来触发的,不支持电平触发; 二:外部中断分组 STM32的每一个GPIO都能配置成一个外部中断触发源,STM32通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16组,STM32规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。 STM32分组和对应中断处理函数分配: 三:外部中断的配置过程 l配置触发源-GPIO 触发源为通过GPIO端口输入,所以,要配置GPIO的模式,输入方式,输入方式有以下几种: 1.GPIO_Mo
[单片机]
stm32的定时器输入捕获与输出比较
明确一点对比AD的构造,stm32有3个AD,每个AD有很多通道,使用哪个通道就配置成哪个通道,这里定时器也如此,有很多定时器TIMx,每个定时器有很多CHx(通道),可以配置为输入捕捉-------测量频率用,也可以配置为输出比较--------输出PWM使用 输入捕捉:可以用来捕获外部事件,并为其赋予时间标记以说明此事件的发生时刻。 外部事件发生的触发信号由单片机中对应的引脚输入(具体可以参考单片机的datasheet),也可以通过模拟比较器单元来实现。 时间标记可用来计算频率,占空比及信号的其他特征,以及为事件创建日志,主要是用来测量外部信号的频率。 输出比较:定时器中计数寄存器在初始化完后会自动的计数。从botto
[单片机]
<font color='red'>stm32</font>的定时器输入捕获与输出比较
STM32的GPIO工作方式
GPIO支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。同时,GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)。 每个I/O口可以自由编程,但I/O口寄存器必须按32位字被访问。 GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入 GPIO_Mode_IPD 下拉输入 GPIO_Mode_IPU 上拉输入 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_Out_PP 推挽输出 GPIO_Mode_AF_OD 复用开漏输出 GPIO_Mode_AF_PP 复用推挽输
[单片机]
STM32定时器时钟 36M和72M迷糊的问题
(昵称和头像已经过处理) 这个问题,有很多人问到过。关于STM32定时器的时钟,TIM2使用APB1的时钟,APB1的时钟分明是36M,到了TIM2为什么就是72M了? 来来来,不要把问题想的太复杂,关于这个问题,我们看STM32的时钟图,有必要的话,你可以把时钟图打印出来贴到墙上每天看,见多了就熟悉了。 (我截取了时钟图的一部分) 看第一个圆圈内容,APB1的时钟,最大是36M,由分频系数决定,当分频系数是2的时候,APB1的时钟就是36MHz。 看第二个圆圈内容,当APB1的分频系数不为1的时候,TIMXCLK的时钟就是APB1的时钟乘以2。所以TIM2的时钟就是72MHz了。 为什么可以乘以2?答:手册上就是这么说的
[单片机]
<font color='red'>STM32</font>定时器时钟 36M和72M迷糊的问题
STM32-1-STM32时钟系统
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于10
[单片机]
STM32-1-STM32时钟系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved