【win10用vim开发stm32】一、编辑环境配置_stm32cubeide使用vim编辑器-程序员宅基地

技术标签: stm32  gcc  VIM  vim  

调试篇已更新【win10用vim开发stm32】二、vimspector的单片机调试

前言

本文读者应该已经用过vim插件(不用vim的应该也不会看吧),网上vim插件相关博文很多,我也会在自己的VIM专栏更新自己的一些经验,不会用vim插件的话可以先看看,基本是几个拷贝,比较容易。

最新版vim安装

卸载旧版本重装就可以了

sudo add-apt-repository ppa:jonathonf/vim

1.arm-none-eabi-gcc

  交叉编译工具链,下载地址:arm-none-eabi-gcc,安装文件可以自动添加环境变量,压缩包要自行添加bin目录到环境变量,用这个来编译工程,make后生成的hex和bin文件在./build文件加下,make clean可以清除编译文件

arm-none-eabi-gcc -v  //查看是否安装成功,命令错误的话把安装目录bin添加到环境变量

2.cygwin64

  去这个里面安装make命令,下载地址:cygwin64,安装时一路下一步,这里选择阿里云镜像站在这里插入图片描述
Package->All->Devel,然后选择选择make这一个包安装就可以了,安装完把cygwin安装目录下bin文件夹添加到环境变量
在这里插入图片描述

make -v //查看是否安装成功

在工程目录下make即可编译工程

3.stm32cube

       代码生成工具,生成工具链选择mdk生成后再选择makefile重新生成,这样想用哪个编译用哪个。。。
       mdk使用的标准库和arm-none-eabi-gcc使用的标准库不同,需要在Makefile里面添加arm-none-eabi-gcc的标准库,添加keil标准库的话需要一些修改
工具链/IDE

4.makefile

    代码构建依赖描述工具,stm32cube生成makefile工程后,会自动生成makefile文件,如果工具链装好,进入工程目录makefile同目录下使用make编译。
    文件里面有很多命令,大多不需要理睬,stm32已经帮我们生成了所有,只需要添加自己的源文件路径和库文件路径就可以了。
    添加自己的源文件和头文件路径,参照原有格式书写。头文件路径中-I表示include路径,后面跟路径地址,注意路径空格前加\,括号前也要加\
    标准库最好添加arm-none-eabi-gcc的。
在这里插入图片描述
在这里插入图片描述

    保存后重新compiledb make可以生成新的compile_command.json文件,注意,重新生成后要重新打开vim,这样新的.json文件才能生效。
    路径添加和修改后出错可以用make clean清除一下重新编译

5.vim插件------coc.nvim

  自动补全插件,仓库地址:coc.nvim,安装插件的同时使用插件的推荐vim启动配置,这样才能用gd那些跳转。
  这里使用vim-plug插件管理器来安装,注意安装失败的话需要改一下插件管理器仓库地址,参考:
  链接

6.coc插件------coc-clangd

  舒服打代码最重要的一个东西,提供补全和语法检测,支持补全中文。仓库地址:coc-clangd,安装好coc后在vim界面使用coc命令即可安装,然后安装clangd,安装完成需要把bin目录添加到环境变量

:CocInstall coc-clangd

7.clangd编译数据库生成软件compiledb

  clangd依赖compile_command.json才能很好的工作,这个工具用来生成compile_command.json,否则补全会有问题,仓库地址:compiledb
  需要安装python

pip install compiledb
compiledb make //在工程目录下生成compile_command.json

功能演示

  经过一段时间的使用,还是很完美的,不算调试的话不比vsc差
  库补全:
在这里插入图片描述
  标准库补全:
在这里插入图片描述
  语法检测:
U4MTkxNjc5,size_16,color_FFFFFF,t_70)
  内置终端编译:
在这里插入图片描述
  使用keil编译:
在这里插入图片描述
  使用keil下载:
在这里插入图片描述

  (推一篇之前写的vim基本操作:win下使用gvim编译keil工程及一些常用操作及快捷键------持续更新

  有新东西的话我会慢慢加进来,折腾的路还很长。
  下载调试工具的话还没搞明白,弄清楚了会另外写一篇文章讲下载和仿真,工具链的gdb工具可以直接用,但命令行调试显然是不好用的。
一些其他资料参考:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a1058191679/article/details/118003787

智能推荐

Python Django 安装(No module named setuptools)解决方案_离线安装django报错no module setuptools-程序员宅基地

文章浏览阅读2.6k次。只是在Windows环境下的解决方案。 使用Django做Python网站开发,按照官方步鄹引入的时候会出现如下错误。 这是因为需要引入一个第三方的模块,在Python的网站上面下载即可。(下载地址再图片的最下方) 链接地址:http://pypi.python.org/pypi/setuptools下载完成以后解压到自己存放的目录下,目录结构: 在此目录下执行如下命令:python set_离线安装django报错no module setuptools

IOS学习之页面之间的传值方式(Delegate/NSNotification/Block/NSUserDefault ,单例模式)_ios页面之间传值单例模式-程序员宅基地

文章浏览阅读434次。iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block) 实现了以下iOS页面间传值:1.委托delegate方式;2.通知notification方式;3.block方式;4.UserDefault或者文件方式;5.单例模式方式;6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下_ios页面之间传值单例模式

数据库系列课程(03)-Linux环境MyCat的安装与配置_mycat mber: 42; 必须为元素类型 "user" 声明属性 "defaultaccoun-程序员宅基地

文章浏览阅读486次。本文来讲解下如何在Linux下安装MyCat:1.上传Mycat-server-1.6.5-release-20180122220033-linux.tar2.解压安装包tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz 3.配置schema.xmlcd /usr/local/mycat/conf/vi s..._mycat mber: 42; 必须为元素类型 "user" 声明属性 "defaultaccount"。

oracle 生成随机数语句,Oracle数据库生成随机数的函数-程序员宅基地

文章浏览阅读501次。在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个:DBMS_RANDOM.VALUE函数该函数用来产生一个随机数,有两种用法:1. 产生一个介于0和1之间(不包含0和1)的38位精度的随机数,语法为:DBMS_RANDOM.VALUE RETURN NUMBER;这种用法不包含参数。2. 产生一个介于指定范围之内的38位精度的随机数,语法..._oracle添加语句生成随机参数

Keep chatgpt alive, 安装插件,保持chatgpt在线_keepchatgpt下载-程序员宅基地

文章浏览阅读2.3k次。ChatGPT是一种基于自然语言处理(NLP)的人工智能技术,可以帮助我们实现智能聊天。然而,在使用ChatGPT插件过程中,我们可能会遇到频繁的网络错误,这会导致我们需要不断刷新网页,重复进行一些繁琐的操作,影响使用体验。为了解决这个问题,我们可以使用一些技巧来优化ChatGPT的使用过程,提高工作效率。_keepchatgpt下载

数据字典的理解_数据字典就是数据库表吗-程序员宅基地

文章浏览阅读6k次,点赞10次,收藏25次。数据字典的理解1.什么叫数据字典数据字典通俗上讲就是将数据抽象为字典的形式存储。想要理解数据字典首先我们要了解什么叫做字典,字典的构成,字典的作用,这些我们弄懂了基本上数据字典的概念大致也就弄懂了。从字典的构成理解:字典都是以键值对的方式来存储和查阅。所以数据字典必定也是以键值对的方式存储和查阅。假如我们不认识“任”这个字,想想我们使用字典查“任”这个字的时候首先查的是“亻”偏旁部首,然..._数据字典就是数据库表吗

随便推点

python中yield的用法详解——最简单,最清晰的解释_yield python-程序员宅基地

文章浏览阅读10w+次,点赞7.9k次,收藏9k次。首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂的,我就想问没有有考虑过读者的感受。接下来是正题:首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的retur..._yield python

计算机网络开荒1-概述-程序员宅基地

文章浏览阅读823次。计算机网络 = 通信技术 + 计算机技术计算机网络定义:计算机网络就是互联的、自治的计算机集合自治-无主从关系互联-互联互通。

iOS端屏幕录制开发指南_oc 调用屏幕录制全局-程序员宅基地

文章浏览阅读1.4k次。一、 概述实现直播过程中共享屏幕分为两个步骤:屏幕数据采集和流媒体数据推送。前对于 iOS 来说,屏幕采集需要系统的权限,受制于iOS系统的限制,第三方 app 并没有直接录制屏幕的权限,必须通过系统的功能来实现。本文将描述iOS系统的屏幕共享的应用、实现、限制、实现细节等方面调研结果。(注:由于iOS 10和之前的系统只支持App内录制屏幕,所以只做简单的介绍,不做详细说明)二、 应用屏幕共享早起出现在视频会议当中,后来在一些游戏直播中也出现了大规模应用,Apple早期不支持屏幕共享,但随着直播的_oc 调用屏幕录制全局

CLion开发图书管理系统项目 (c++ + MySQL实现)_c++编写图书管理系统mysql-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏15次。当下市场日益激烈的竞争迫使图书企业采用一种新的管理方式来加快图书管理操作,而计算机技术的发展为图书管理注入了新的生机。通过调查市场,一款合格的图书管理系统必须具备以下三个特点:能够对图书信息进行集中管理、能够大大提高用户工作效率、能够对图书的部分信息进行查询 基于上述需求,笔者在此开发出一款简单的图书管理系统以方便用户管理图书信息。_c++编写图书管理系统mysql

UVa 11504 - Dominos_11518 - dominos 2 python-程序员宅基地

文章浏览阅读1.8k次。题目:有一些多米诺骨牌,现在告诉你他们的相邻顺序,问最少推几次可以把他们全部推倒。分析:图论,强连通分量。强连通分量上的某点被推到,整个分量都会倒。 求强连通分量,然后缩点,剩下的“点”中每个入度为0的点都要用手推倒;(必要性) 再者,在缩点后的图中,每次找到一个入度为0的点推倒后,不会产生新的入度为0的点;(充分性) _11518 - dominos 2 python

IE6的一些兼容性问题-程序员宅基地

文章浏览阅读295次。总结一下IE6兼容性的部分小问题: 1.IE6的hack问题:在css属性前加上下划线“_”,这个属性就是IE6认识的专有属性。可以用它解决一些IE6的兼容问题。 例如:_background-color:red;//只有IE6才认识这个属性2.IE6不支持小于12px的盒子。解决办法是给盒子设置一个“_font-size”属性,使属性值尽可能小,如:_font-size:0;div{