mdk上可以為多種處理器開發,除錯軟體。因此在生成專案的時候,需要知道目標處理器,除錯工具。
目前將要開發的控制器使用的是 st32l1xx,stlink開發板。
可以直接在晶元search 框中輸入目標控制器的型號,然後選擇乙個比較接近的控制器。
這個時候,如果是新專案,那麼會把目標startup.s檔案複製到專案目錄下。
在debug目錄下選擇除錯工具。如果是 st-link,還需要選擇是jtag還是sw。st的develop板使用的是sw 方式。
新增main函式
這個時候編譯時不能通過的。在編譯後會提示說找不到_main。
.\testl.axf: error: l6218e: undefined symbol systeminit (referred from startup_stm32l1xx_md.o).
新增 systeminit
在網上搜尋了一通,發現該函式是乙個需要使用者實現的函式,用於設定乙個基本的暫存器。可以從例子中把這個函式複製過來直接使用。
**如下:
void systeminit (void)
新增巨集定義 use_stdperiph_driver stm32l1xx_mdp
加入這個函式後,又出現如下錯誤**:
對比了例子**後,在c/c++ define 中加入 如下巨集定義 use_stdperiph_driver stm32l1xx_mdp
新增stm32l1xx_conf.h 以及驅動標頭檔案
然後又出現了錯誤**:
c:\keil\arm\inc\st\stm32l1xx\stm32l1xx.h(6638): error: #5: cannot open source input file "stm32l1xx_conf.h": no such file or directory
在 stm32l***.h中,當需要使用外設的時候,需要這個標頭檔案
#ifdef use_stdperiph_driver
#include "stm32l1xx_conf.h"
#endif
可能keil認為各個處理器的外設的暫存器位址的定義是不同的,因此不在內部定義這個標頭檔案了,而改為使用者自己定義這個標頭檔案。在這個標頭檔案中需包含各個外設的暫存器位址定義。在從例子中加入了這個標頭檔案,並加入了外設定義目錄後再次編譯。
要注意的是光把這個檔案複製到專案目錄下還不行,還得把這個檔案新增到專案中去才是有效的。
除了這個檔案外,還要把例子中的stm32l1xx_stdperiph_driver複製到專案目錄,並新增到專案中才行。
新增 vect_tab_offset
繼續編譯,又出現如下錯誤:
main.c(36): error: #20: identifier "vect_tab_offset" is undefined
scb->vtor = flash_base | vect_tab_offset; /* vector table relocation in internal flash. */
從例子中找到了這個巨集定義,新增到我的**中
#define vect_tab_offset 0x0 /*!< vector table base offset field.
this value must be a multiple of 0x200. */
終於完成了乙個main函式的編譯。
新建立的專案是無法燒寫的,把專案設定檔案按照例子抄一遍就可以了。我也不記得哪個引數是關鍵引數,總之抄過去就對了。
建立ionic4專案
一 搭建ionic環境,建立ionic專案 1 必須安裝nodejs 最新穩定版本 2 npm i g cordova ionic cnpm i g cordova ionic node v 12.18.2 npm v 6.14.5 cordova v 8.1.1 ionic v 4.10.2 安裝...
第4周專案4
煙台大學計算機學院 檔名稱 xm.cpp 完成日期 2017年9月24日 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m和n,輸出為大王的猴子是幾號...
第4周專案1 建立單鏈表
完成日期 2015年9月21日 版 本 號 v1.0 問題描述 定義單鏈表儲存結構,用頭插法和尾插法建立單鏈表,並顯示建立好以後的結果。輸入描述 無 程式輸出 輸出頭插法尾插發鍊錶 include include typedef int elemtype typedef struct lnode 定...