1. 程式人生 > >用VIM結合Keil(MDK)寫STM32、C51等程式

用VIM結合Keil(MDK)寫STM32、C51等程式

話說這段時間經常用Keil寫些東西,寫C51的時候倒還好,寫STM32的程式的時候,由於我是用的STM32的官方韌體庫,裡面的各種識別符號相當長- -看起來可讀性是挺不錯的,



不過一個字母一個字母敲還是挺蛋疼的,於是準備用外部編輯器。好在Keil可以很方便的呼叫外部編輯器,


具體方法是在Tool→Customize Tools Menu下面新增一個選項,名字隨


便輸,最好加個(&X)在最後面(X可以使隨便一個字母),Command裡面輸入想要使用的編輯器的完整路徑,Argument輸入#E,Initial Folder空著,這樣子在Keil裡面按Alt,然後


T,X就直接用設定的編輯器開啟當前檔案了,很方便。

呼叫是沒問題了,不過用什麼編輯器好呢?我在網上翻了一下,有不少人用Source Insight之類的編輯器,確實也挺好用的,不過這種編輯器還要建立工程,比較麻煩- -|加


上最近折騰vps搞的vim挺熟練的,乾脆就用vim吧- -不過肯定是要經過一番配置的- -|
先去www.vim.org下載最新版的gvim,安裝的時候我選擇直接安裝在d:\vim\而沒有裝在C的program Files下面,一方面是重灌系統之後懶得配置,另外一方面是路徑裡面包含


空格的話會有點小問題,所以乾脆放D盤根目錄了。
vim這玩意兒上手有點麻煩,第一次用的話找到vim目錄下面的vimtutor.bat,有個幾十分鐘的教程,之後應該會有點感覺了。

vim的配置檔案是vim目錄下的_vimrc,很多東西都要在這裡修改。為了照顧windows使用者的習慣,vim現在有一些windows風格的快捷鍵,不過我感覺由於跟之前的一些快捷鍵會


衝突,反而不方便,所以註釋掉_vimrc一下兩行,註釋的方法是在行首加一個”,如果不習慣vim的操作方法也可以保留


source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim


現在的vim在插入模式下按Ctrl+P能夠根據上下文進行一個簡單的程式碼提示,不過顯然還不是很好用,下面加外掛
先裝OmniCppComplete,下載地址:http://www.vim.org/scripts/script.php?script_id=1520

安裝方法很簡單,直接把解壓出來的東西全部塞到d:\vim\vimfiles就可以了
然後在_vimrc裡面加上 filetype plugin on

去http://ctags.sourceforge.net/下一個ctags,放到c:\windows\下面(其實只要是%PATH%裡面的目錄就可以),在命令提示符中找到stm32的標準庫檔案,我是把整個庫檔案包括例子都放在C:\Keil\ARM\STM32F10x_StdPeriph_Lib_V3.5.0下面了

執行如下命令生成tags檔案
R:\>ctags -R –c++-kinds=+p –fields=+iaS –extra=+q c:\Keil\ARM\STM32F10x_StdPeriph_Lib_V3.5.0,我的當前目錄是R:,所以生成的tags檔案在R盤下面
在d:\vim\vimfiles下面建一個 tags目錄,把生成的tags複製過來,順便改個名字,我改成stm32f10x_tags,然後在_vimrc加一條set tags+=d:\Vim\vimfiles\tags


\stm32f10x_tags
如果需要,也可以用同樣的辦法掃描其他庫,然後分別加進去
重新開啟以下vim,再試一下Ctrl+P,可以發現現在稍微智慧些了,能夠根據C的語法提供提示,而且在”.”,”->”後面還會自動蹦出成員函式。
不過老師按Ctrl+P挺麻煩的,當然萬能的VIM肯定有相應的外掛,我選中SuperTab,這個能夠用tabs來代替Ctrl+P,比較方便,下載地


址:http://www.vim.org/scripts/script.php?script_id=1643
下載下來是個vba檔案,用vim開啟,輸入:so % 就安裝好了
現在按tab的時候如果前面不是空格,就會進行自動提示,不過現在的supertab還不是很好用,一方面是tab之後會自動選中一個,如果不是滿意的還要刪掉,另外就是現在的提示


沒有經過OmniCppComplete處理,提示的是所有符合字首的tag
在_vimrc裡面加上
let g:SuperTabDefaultCompletionType = “<c-x><c-o><c-p>”
這樣子提示就比較完美了,不過還有點小問題,主要是有時候會重複提示
寫程式碼的時候沒有自動括號顯然不太方便,有這方面的外掛,AutoClose http://www.vim.org/scripts/script.php?script_id=2009
下載下來放在D:\Vim\vimfiles\plugin就可以了
還有一個Taglist,這個外掛也很好用,顯示函式、變數列表的http://www.vim.org/scripts/script.php?script_id=273
另外還有一些縮排啊什麼的也可以修改一下
set shiftwidth=4 ” 設定 << 和 >> 命令移動時的寬度為 4
set tabstop=4 ” 設定 tab 長度為 4
再另外還有一些雜七雜八的好用的小外掛,自己根據需要新增就好了,vim官網上面可以慢慢看。
現在用這個vim來寫程式碼應該比較舒服了。

相關推薦

VIM結合Keil(MDK)STM32C51程式

話說這段時間經常用Keil寫些東西,寫C51的時候倒還好,寫STM32的程式的時候,由於我是用的STM32的官方韌體庫,裡面的各種識別符號相當長- -看起來可讀性是挺不錯的, 不過一個字母一個字母敲還是挺蛋疼的,於是準備用外部編輯器。好在Keil可以很方便的呼叫外部編輯器

Keil MDK在個別電腦上下載程式失敗的解決辦法

文章原始地址: http://feotech.com/?p=90 Keil MDK在個別電腦上無法下載程式 Keil MDK下載程式時顯示 No Cortex-M SW Device Found (本例中使用SWD介面) 選擇Options for Target “Project”

Android讀文字圖片

文章目錄 Kotlin方法 1. 文字 寫 讀 2. 圖片 (1) 利用位元組陣列讀取點陣圖 (2) 利用輸入流讀取點陣圖 (3) 直接從檔案路徑獲取點陣圖

示波器測量I2C進行時序圖波形分析

I2C的概念原理網上都有就不說了,這裡只把我把兩個開發板通過I2C通訊的除錯經驗記錄分享一下。 I2C要求要有一個主裝置,負責發起請求和控制時鐘;其它為從裝置,通過裝置ID地址來識別並響應主裝置請求。主從裝置要輪流控制SDA。一開始我沒搞明白這一點,直接加了寫I2C資料程式

防火牆埠來禁止迅雷BT軟體

本節介紹如何通過防火牆軟體設定埠的方法來實現禁止迅雷、BT等軟體。首先下載一個防火牆軟體,比如天網防火牆,安裝完後啟動。再安裝你要限制的軟體,就拿迅雷來說吧,啟動迅雷後,防火牆會提示它要連聯的TCP埠是3076,3077,3078,用筆記下來撒,這不用說了吧。然後就開始禁止客戶機訪問這些埠了,點選 “開始選

pythonCSVEXCEL文件

() import exce 讀取 key print tput save style import pandas as pd writer = pd.ExcelWriter(‘output.xlsx‘) df1 = pd.DataFrame(data={‘col1‘:[

我是這樣vim代碼的--插件篇

ide 功能 cal class 環境 開發 快捷鍵 odi ast 上一篇介紹了vim的簡單編輯方式。熟練掌握vim的基本操作後,還只是一個得心應手的文本編輯器,終究是比IDE要弱很多的。強大的vs中,代碼目錄樹,代碼跳轉,函數瀏覽,自動補全,代碼調試等功能才是

mdk keil 指定變量函數存儲位置,使用 Scatter-Loading Description File, __attribute__(("section“))

最大 type 內存分區 stdin script bsp attr 出現 name 0. 數據類型說明 主要包括4類: Code (inc. data) ,屬於RO,也就是寫的函數代碼(包括代碼中的變量) RO Data , 屬於RO,使用const修飾的變量。

代碼要 Vim,因為越難入門的工具回報越大

windows 發的 自帶 錯誤 improve 做的 重寫 36kr 用戶真正的需求 編者按:現在的技術界有一種傾向,將軟件/應用操作簡單化,用戶能輕松上手。但是工具是否強大,取決於它能否靈活地滿足使用者的各種需要。有些工具雖然很難入門,學會了便能對自己的操作有更深的層次

vimpython程式碼時的一些配置

本文轉自https://blog.csdn.net/lord_is_layuping/article/details/7706874?utm_source=blogxgwz6 關鍵是使Vim在發現所編輯的檔案是Python檔案時自動載入python的縮排檔案。預設的縮排方式很爛

學會資料庫讀分離分表分庫——Mycat,這一篇就夠了!

轉:     https://www.cnblogs.com/joylee/p/7513038.html 系統開發中,資料庫是非常重要的一個點。除了程式的本身的優化,如:SQL語句優化、程式碼優化,資料庫的處理本身優化也是非常重要的。主從、熱備、分表分庫等都是系統

KEIL / MDK生成BIN檔案的兩種方式,直接複製就能

在After Build/Rebuild選項卡中,勾選 "Run # 1",在後面輸入框寫入bin檔案生成方式,如下 圖1 第一種方式:設定絕對路徑(個人實踐過,沒有成功,不知道為什麼) "D:\Program Files\MDK516\ARM\ARMCC\bin\

學會數據庫讀分離分表分庫——Mycat

切換 心跳 native 自動生成 拆分 運行 管理命令 users 業界 系統開發中,數據庫是非常重要的一個點。除了程序的本身的優化,如:SQL語句優化、代碼優化,數據庫的處理本身優化也是非常重要的。主從、熱備、分表分庫等都是系統發展遲早會遇到的技術問題問題。Myca

STM32keil MDK下重定向printf到串列埠(基於STM32CubeMX)

概述 在keil MDK環境下重定向printf與keil C51不同,由於本人使用了STM32CubeMX生成工程模板,HAL_USART_Transmit函式即是模板裡串列埠輸出的函式。由於pri

Java經典演算法集——如下:122345這六個數字,java一個main函式,打印出所有不同的排列,如:512234412345,要求:"4"不能在第三位,"3"與"5"不能相連。

轉:http://www.blogjava.net/SongJunke/articles/101741.html 演算法程式題:     該公司筆試題就1個,要求在10分鐘內作完。     題目如下:用1、2、2、3、4、5這六個數字,用java寫一個main函式,打印出所

stm32開發之使用Keil MDK以及標準外設庫建立STM32工程

通過上一節對標準外設庫的介紹,想必各位讀者對標準外設庫已經有了基本的認識,然而由於標準外設庫中檔案眾多,很多初學者在開始很長一段時間內甚至都無法完全自己建立一個工程,很多人只是依賴標準外設庫或給定的工程

瘋狂微控制器--C++STM32程式-OLED

第一次見到OLED就是在MP3播放器上,那時只有高階大氣上檔次的機器才用OLED,所以後來對使用OLED的裝置總有一種高貴的感覺. 今天就來玩一玩OLED 型號:PG9639TLBE, 驅動IC:SSD1306 驅動方式:模擬SPI方式, OLED介面引腳:SCLK,SDI

Keil MDK 選擇c編譯還是c++編譯方法

      接手一個專案,程式碼是MDK用c++編譯,由於程式碼優化成了C程式碼但是在寫標頭檔案.h時候總是要增加如下程式碼 #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif 查資料,

Mycat分庫分表的簡單實踐 / Mycat,學會資料庫讀分離分表分庫

原創 楊建榮的學習筆記 2017-09-06 10:03 //沒找到原創地址,轉載別人的也沒留地址 。。。 MySQL的使用場景中,讀寫分離只是方案中的一部分,想要擴充套件,勢必會用到分庫分表,可喜的是Mycat裡已經做到了,今天花時間測試了一下,感覺還不錯。

KEIL MDK中的RORW和ZI DATA

一直以來對於ARM體系中所描述的RO,RW和ZI資料存在似是而非的理解,這段時間對其仔細瞭解了一番,發現了一些規律,理解了一些以前書本上有的但是不理解的東西,我想應該有不少人也有和我同樣的困惑,因此將我的一些關於RO,RW和ZI的理解寫出來,希望能對大家有所幫助。 要了解RO,RW和ZI需要首先了解以下知識