在Mac OS X中使用VIM开发STM32(4)

发布者:SparklingBeauty最新更新时间:2022-01-13 来源: eefocus关键字:Mac  VIM  STM32 手机看文章 扫描二维码
随时随地手机看文章

在上三篇文章中,我们基本搭建好了开发STM32的IDE环境,当然vim、ctags、taglist、winmanager的命令和用法太多,不可能全部列出,在这里只是给大家提供一种思路和方法,具体扩展功能参考相关插件的帮助文档就可以获得,当然选择自己最最常用的几个命令,操作熟练了,就足以进行开发调试了。今天这篇文章我们使用gdb进行STM32调试。


(四)gdb调试STM32程序


我们还是用先前的stm32f4-discovery程序为例子,初步探讨一下stm32调试的方法步骤,当然在这里敝人只是提供一种方法和思路,gdb调试的官方文档共有600多页,调试命令及其丰富,细节功能大家可以参考文档使用。


4.1 启动gdb server

gdb server的启动非常简单,只需终端输入

sudo st-util

 即显示以下信息:

NewImage

就显示出了板子的硬件信息,这一步就算成功了。


4.2 启动gdb交叉调试工具

在这里我们使用的是arm gdb交叉调试工具,不要关闭上一步打开的终端,然后新建终端输入

arm-none-eabi-gdb main.elf

打开gdb调试器,同时指定了需要加载调试的文件main.elf,显示以下信息:

NewImage

出现上面这个信息我们就可以输入调试命令了。


4.3 Demo

cd到stm32f4-discovery目录里,首先要绑定调试端口4242,

tar ext:4242

然后加载我们需要调试的文件

 load

然后输入指令continue就可运行程序了,过程如下:

NewImage

如果想暂停运行只需要按ctrl+c快捷键,即可暂停:

NewImage

并且我们可以看到程序现在暂停到了main.c函数的第6行。


再举一个断点调试的例子吧,比如我们想在第6行添加断点,只需要输入命令:

break 6


就可以在第6行添加断点了,此时再输入continue命令,程序会自动停在第六行处,如果想删除断点,输入命令clear即可。


另外info命令能够查看调试过程中与你自己程序相关的信息,相关info命令有50多个,我们可以输入help info查看info命令的帮助信息。


至此我们已经能够使用VIM和gdb进行简单的STM32程序编码与调试工作了,更为强大的功能还需要我们通过他们的帮助文档获得,在这里也没有办法一一列出,只是提供给大家一个思路


关键字:Mac  VIM  STM32 引用地址:在Mac OS X中使用VIM开发STM32(4)

上一篇:STM32 硬件I2C 到底是不是个坑?
下一篇:在Mac OS X中使用VIM开发STM32(3)

推荐阅读最新更新时间:2024-11-13 11:25

三星开始开发更先进OLED面板 应用于未来iPad和Mac
根据The Elec的一份新报告,三星已经开始开发更先进的OLED面板,这些面板应该可以满足苹果在未来iPad和Mac中使用的要求。 此前有报道称,苹果打算在2024年发布一款采用三星OLED屏的iPad,但苹果正在寻找适用于更大显示屏的OLED面板,这种面板是双层串联式的OLED面板,有两层发光层,从而使OLED屏的亮度翻了一番,寿命翻了四倍。 苹果所有的iPhone都使用单叠层结构,苹果要求双叠层面板的理由是,iPad的使用时间往往更长。这些更先进的面板最终也将进入MacBook和iMac。苹果目前只在iPhone和Apple Watch上使用OLED屏,但Mac和iPad仅限于LCD和mini-LED。 据报道,
[手机便携]
STM32 RTC设置日期失败(重启后生效)的解决方法
调试STM32F429的RTC时钟时遇到了如下问题: RTC设置日期时会延迟一段时间(几秒)或重启后才生效。 分析过程: 1、分析发现原程序在RTC的WAKEUP中断里读取时间和日期,后关闭此中断,在while循环中轮询读取,再设置日期,发现可以立即生效。所以猜测在WAKEUP中断里读取日期会对日期设置产生影响。 2、重新打开WAKEUP中断,并删除其中的日期读取函数,发现可以正常设置日期。 解决方法: 1、使用WAKEUP中断读取时间,轮询读取日期。 2、不使用WAKEUP中断,轮询读取时间和日期。
[单片机]
STM32ADC转换中断读取
ADC中断读取方式适用于低频率的ADC采集,而高频率的AD采集必须使用DMA, ADC中断读取的初始化函数只是比上一篇的直接读取方式添加了点中断配置文件,代码如下: static void ADC_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPB,PE¶Ë¿ÚʱÖÓ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO
[单片机]
嵌入式stm32学习:系统定时器
bsp_SysTick.h #ifndef __SYSTICK_H #define __SYSTICK_H #include stm32f4xx.h void SysTick_Init(void); //定义初始化函数 void Delay_us(__IO u32 nTime); //单位10us //#define Delay_ms(x) Delay_us(100*x) //可自由配置中断时间,当前中断时间为1ms #endif /* __SYSTICK_H */ bsp_SysTick.c /** *********************************************
[单片机]
STM32学习笔记(十) CAN通讯测试(环回模式)
1.CAN通讯的理解  想学习CAN通讯,那么要对通讯协议有一定的认知。通讯协议是指通信双方对数据传送控制的一种约定。约定中包括对数据格式,同步方式,传输速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。  CAN通讯全称控制器局域网通讯,是用来在局域网中高效传输,处理信息的一种通讯方式。它采用数据块编码的方式,数据块根据帧类型的不同有四种格式,可使不同的节点接收到相同的数据,然后再根据各节点内CAN配置选择处理还是丢弃该信息(这与TCP/IP协议栈的链路层的MAC地址过滤很相似,是可以互通理解的),CAN的位流是按照非归零(NRZ)码方式编码,一个完整的位电平有显性和隐性两种方式。显性和隐性
[单片机]
<font color='red'>STM32</font>学习笔记(十) CAN通讯测试(环回模式)
stm32 启动时设置时钟
在库文件自带的启动文件中,在没有执行到main 函数之前, 就开始执行SystemInit() 函数 ,从字面上看,就是执行系统初始化函数 SystemInit() 位于 system_stm32f10x.c 文件中 可以看出,前面大半截一直都是在 复位时钟系统。 然后开始设置时钟SetSysClock(); 和SystemInit() 在同一个文件中 。 库文件对时钟选择的处理 如果不是超值型的,那就选择72M 频率。
[单片机]
<font color='red'>stm32</font> 启动时设置时钟
STM32之PWM学习笔记 ---PWM原理
一. STM32F103通用定时器简介: 通用定时器是一个可编程预分频器驱动的16位自动装载计数器(好难记,,)。 适用于: 测量输入信号的脉冲长度(输入捕获)、产生输出波形(输出比较和PWM)。 每个定时器都是完全独立的,都可以同步操作。 ---------------------以下为复制粘贴------------------------------ STM32 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: ①位于低速的APB1总线上(APB1) ②16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 ③16 位可编程(可以实时修改)
[单片机]
记<font color='red'>STM32</font>之PWM学习笔记 ---PWM原理
STM32让printf通过串口打印及自定义printf函数
在嵌入式系统中,通过串口打印log是非常重要的调试手段,但是直接调用底层驱动打印信息非常不方便,在c语言中一般使用printf打印基本的显示信息,而默认printf的结果不会通过串口发送,所以需要对printf的输出进行重定向。 有时候需要同时从多个串口输出信息,如果仍然想通过printf函数输出信息,就需要自己写printf的实现。 一. 初始化端口和配置 对串口用到的GPIO进行配置,并对串口的参数进行初始化。 二. 宏定义并实现具体的发送函数 代码在编译时首先判断__GNUC__有无定义,之后将PUTCHAR_PROTOTYPE替换成具体的定义。在keil5中,使用fputc函数,所以其实
[单片机]
<font color='red'>STM32</font>让printf通过串口打印及自定义printf函数

推荐帖子

单片机常用模块程序代码与电路原理图
本帖最后由paulhyde于2014-9-1504:22编辑单片机常用模块程序代码与电路原理图,希望有助于你的学习~~~单片机常用模块程序代码与电路原理图本帖最后由paulhyde于2014-9-1504:22编辑好东东本帖最后由paulhyde于2014-9-1504:23编辑好东西!又有得玩了!本帖最后由paulhyde于2014-9-1504:23编辑51单片机的吗?还是其他的?里面有什么东东呢
xianghong123 电子竞赛
只有在nrst引脚拉低的情况下才能在MDK中连接上STM32,请问是怎么回事?
各位老大,问一下,我现在的板子连DAPLINK,昨天第一次空片子的时候直接用MDK下程序到STM32里了,今天早上再试,正常状态下在MDK里就显示连接不上,必须按住RESET按键,把CPU的nrst引脚拉低才能在MDK里看到CPU的ID,但是这个状态下又不能烧录程序,请问怎么解决呀?只有在nrst引脚拉低的情况下才能在MDK中连接上STM32,请问是怎么回事?用DAPLink来复位mcu 老大,能具体说一下怎么复位么? 接上DAPLink的NRST引脚
jerry2cool stm32/stm8
体验MAXIM的数字电位器DS1801
体验MAXIM的数字电位器DS1801体验MAXIM的数字电位器DS1801DS1801:原理框图放大+关键特性 Twodigitallycontrolled,65-positionpotentiometers Ultralow-powerconsumption Logarithmicresistivecharacteristics(1dBperstep) Zero-crossingdetectiontoeli
yjtyjt 51单片机
open1081采用STM32F205的内部晶振?
看Core1081,没有外部晶振接口,只有一个32K的晶振。难道Core1081只能使用STM32F205的内部晶振?内部晶振精度好像不高吧open1081采用STM32F205的内部晶振?是的,系统时钟采用的是内部时钟的,32.768是用作实时时钟的!我们经过测试的,运行是很稳定的!话说如果使用外部晶振还如何进行二次封装qq849682862发表于2014-10-2011:52话说如果使用外部晶振还如何进行二次封装 MX1081内部就是一个STM3
小麦克 RF/无线
今天,你的仪器换触屏的了吗?
今天,你的仪器换触屏的了吗?如果忽略仪器的其他性能多点触控屏幕和非触控屏的测试测量仪器您会如何选择呢?可能大家还会考虑性价比是德科技1688网店给您更多选择!以下原厂翻新机你pick✔哪一个呢多点触控N9000BCXA信号分析仪9kHz-7.5GHz六折N9000BCXA信号分析仪9kHz-26.5GHz
EEWORLD社区 测试/测量
奥本海姆版信号与系统(第二版,中文版)
经典教程,资料很清晰,还是中文版的。信号与系统的概念出现在范围广泛的各种领域中,与这些概念有关的思想和方法在很多科学和技术领域起着重要的作用,例如在通信、航空航天、电路设计、声学、地震学、生物工程、能源生产与分配系统、化学工程控制及语音处理等方面。书中讨论了信号与系统分析的基本理论、基本分析方法及其应用。全书共分11章,主要讲述了线性系统的基本理论、信号与系统的基本概念、线性时不变系统、连续与离散信号的傅里叶表示、傅里叶变换以及时域和频域系统的分析方法等内容。作为
arui1999 下载中心专版
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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