介紹
FwLib_STC8 是一個針對STC8G, STC8H系列MCU的C語言封裝庫, 適用于基于這些MCU的快速原型驗證.
* 項目地址: [Gitee FwLib_STC8] https://gitee.com/iosetting/fw-lib_-stc8
* 鏡像地址: [GitHub FwLib_STC8]https://github.com/IOsetting/FwLib_STC8
為避免之前STC12封裝庫存在的問題, 這個封裝庫在以下方面進行了改進
1. 兼容SDCC和Keil C51 FwLib_STC12封裝庫只支持SDCC編譯, 并且寄存器命名與官方不同, 使得基于FwLib_STC12的項目代碼與其他Keil開發的項目代碼無法兼容. 在FwLib_STC8的開發上, 采用了與官方庫文件一致的命名, 并且增加了對Keil C51和SDCC的適配. 基于FwLib_STC8的項目, 可以在Linux下使用SDCC編譯, 也可以在Windows下使用Keil C51環境進行編譯.
2. 減小代碼尺寸 FwLib_STC12封裝庫較多使用函數的方式對寄存器進行封裝, 而函數與函數間的層級調用都會增加棧開支, 這樣一方面8位MCU本來就不多的內存更加捉襟見肘, 另一方面增加了生成的固件尺寸. 在FwLib_STC8封裝庫中, 大量使用宏語句對寄存器操作進行封裝, 并且控制方法間的層級調用深度, 有效節省了固件體積和堆棧占用.
以下介紹在Windows下Keil55開發環境的搭建
前提
1. 已經安裝完成Keil5, 并配置好STC的插件, 如果未完成, 請自行搜索網上的教程和說明
2. (可選)本機安裝了Git并且可以在命令行下使用git命令
1. 創建項目目錄
在文件瀏覽器中, 創建項目目錄, 建議目錄路徑中不要有中文和空格, 例如本例使用路徑
2022-01-05_001.png (44.47 KB, 下載次數: 109)
下載附件
2022-1-5 21:10 上傳
2. 創建Keil5項目
打開Keil5, 點擊 Project -> New uVision Project, 在彈出的對話框中, 選擇剛才創建的目錄, 填入項目名稱, 點擊保存
2022-01-05_002.png (113.36 KB, 下載次數: 102)
下載附件
2022-1-5 21:10 上傳
3. 選擇MCU型號
剛才的保存點擊后, 會彈出MCU選擇對話框, 在里面選擇STC MCU Database,
2022-01-05_003.png (62.86 KB, 下載次數: 111)
下載附件
2022-1-5 21:10 上傳
在下面的列表中選擇自己型號的那款, 點擊OK保存. 如果沒有完全匹配的型號, 則選擇同樣系列中, 內存數量一致的型號, 例如我使用的是STC8H3K32S2, 在列表中沒有此項, 就選用同樣是STC8H系列3K內存的STC8H3K64S4
2022-01-05_004.png (135.88 KB, 下載次數: 107)
下載附件
2022-1-5 21:10 上傳
會彈出一個對話框問是否復制STARTUP.A51, 點Yes
2022-01-05_005.png (15.67 KB, 下載次數: 106)
下載附件
2022-1-5 21:10 上傳
4. Keil5 項目結構
Keil5項目就已經創建完成, 這時候其實就已經可以添加官方的頭文件, 直接用寄存器進行開發了
2022-01-05_006.png (97.75 KB, 下載次數: 112)
下載附件
2022-1-5 21:10 上傳
項目的目錄結構為
- stc8h_demo/
- |
- │ STARTUP.A51
- │ stc8h_demo.uvproj
- ├─Listings
- └─Objects
復制代碼
5. 下載FwLib_STC8
可以通過git clone導出項目代碼, 或者直接下載zip包解壓
**方式一: 通過git導出**
在命令行下執行- # github
- git clone https://github.com/IOsetting/FwLib_STC8.git FwLib_STC8
- # 或者giteee
- git clone https://gitee.com/iosetting/fw-lib_-stc8.git FwLib_STC8
復制代碼
2022-01-05_007.png (16.76 KB, 下載次數: 98)
下載附件
2022-1-5 21:10 上傳
**方式二: 下載zip包后解壓**
訪問這篇文章頂部的項目鏈接, 在頁面上, 點擊"克隆/下載" 下載ZIP, 并解壓成目錄
6. 將FwLib_STC8放入項目目錄
將上一步得到的目錄, 復制到Keil5項目的目錄下, 復制完成后的項目目錄結構如下- stc8h_demo/
- |
- │ STARTUP.A51
- │ stc8h_test003.uvproj
- ├─FwLib_STC8
- │ ├─demo
- │ ├─include
- │ └─src
- ├─Listings
- └─Objects
復制代碼
在文件系統中的目錄列表
2022-01-05_008.png (45.13 KB, 下載次數: 116)
下載附件
2022-1-5 21:10 上傳
7. 在Keil5中添加封裝庫庫
通過菜單點開Project -> Manage -> Project Items, 或者直接從圖標欄點擊對應的圖標,
2022-01-05_009.png (145.29 KB, 下載次數: 129)
下載附件
2022-1-5 21:10 上傳
打開文件管理對話框, 在Groups中增加一項, 名稱"FwLib_STC8", 這個可以根據需要自己改成別的名稱也可以, 點中這個新增加的Group, 在右側那列點擊下面的Add Files, 會彈出一個文件選擇對話框
2022-01-05_010.png (77.06 KB, 下載次數: 123)
下載附件
2022-1-5 21:10 上傳
在文件選擇對話框中瀏覽到FwLib_STC8\src, 全選全部c文件(可以使用Ctrl+A), 點Add, 然后點Close,
2022-01-05_011.png (142.19 KB, 下載次數: 129)
下載附件
2022-1-5 21:10 上傳
可以看到文件都已經添加進來了
2022-01-05_012.png (84.13 KB, 下載次數: 131)
下載附件
2022-1-5 21:10 上傳
8. 在Keil5中添加演示用例
保持上一步的窗口不動, 點擊選中Source Group 1, 在右側那列點擊下面的Add Files, 會彈出一個文件選擇對話框
2022-01-05_013.png (77.53 KB, 下載次數: 113)
下載附件
2022-1-5 21:10 上傳
瀏覽到 FwLib_STC8\demo\uart, 選中uart1_timer1_tx.c, 這是一個用定時器1做波特率時鐘源的串口1測試樣例
2022-01-05_014.png (142.64 KB, 下載次數: 112)
下載附件
2022-1-5 21:10 上傳
添加之后, 可以看到增加了對應的文件, 點擊OK保存
2022-01-05_015.png (80.25 KB, 下載次數: 148)
下載附件
2022-1-5 21:10 上傳
可以看到, 剛才添加的文件都已經出現在項目樹結構中
2022-01-05_016.png (138.72 KB, 下載次數: 113)
下載附件
2022-1-5 21:10 上傳
9. 在Keil5中對項目進行配置
直接對剛才的項目結構進行編譯是不行的, 還需要配置一下環境變量, 通過菜單點開Project -> Options for Target ... , 或者直接從圖標欄點擊項目選項圖標
2022-01-05_017.png (162.27 KB, 下載次數: 117)
下載附件
2022-1-5 21:10 上傳
打開選項對話框
2022-01-05_018.png (175.4 KB, 下載次數: 117)
下載附件
2022-1-5 21:10 上傳
如上圖, 選中C51標簽頁, 在"2"標識的輸入框中, 輸入- __CX51__, __CONF_MCU_MODEL=MCU_MODEL_STC8H3K32S2,__CONF_FOSC=36864000UL
復制代碼
對上面各項的說明
* `__CX51__` 是將當前編譯環境配置為C51
* `__CONF_MCU_MODEL`, 這里設置對應的MCU型號, 當前使用的型號為`MCU_MODEL_STC8H3K32S2`, 如果你的芯片不是這個, 需要修改成對應的型號, 具體的型號可以在FwLib_STC8/include/fw_conf.h中查找. 注: STC8G只列了大型號, 只需要填大型號即可.
* `__CONF_FOSC` 是這個程序運行時將使用的振蕩頻率, 取決于你用STC-ISP燒錄時會用什么頻率, 在這里填入對應的數字, 最后的`UL`代表這個數字是無符號長整數
然后點擊"3", 在彈出的對話框中, 選中FwLib_STC8/include 目錄, 這里是配置封裝庫的頭文件路徑.
2022-01-05_019.png (145.53 KB, 下載次數: 103)
下載附件
2022-1-5 21:10 上傳
配置完成后,
2022-01-05_020.png (193.76 KB, 下載次數: 108)
下載附件
2022-1-5 21:10 上傳
再選中Output標簽頁, 在上面勾選 Create HEX File, 這一步是為了編譯后生成用于燒錄的hex文件
2022-01-05_020A.png (163.75 KB, 下載次數: 110)
下載附件
2022-1-5 21:10 上傳
上面完成后, 點擊OK保存
10. 調整代碼并編譯
因為Windows下使用STC-ISP可以直接設置時鐘頻率, 所以代碼中不需要對MCU時鐘進行調整, 這里要打開樣例的代碼, 如下圖所示, 將`SYS_SetClock();`這行注釋掉, 或刪掉, 然后保存文件
2022-01-05_021.png (309.08 KB, 下載次數: 124)
下載附件
2022-1-5 21:10 上傳
點擊"3"標識的按鈕編譯項目, 如果要完整編譯, 按右邊的按鈕, 平時用左邊的按鈕就可以, 或者使用快捷鍵`F7`
2022-01-05_022.png (69.62 KB, 下載次數: 120)
下載附件
2022-1-5 21:10 上傳
因為封裝庫中很多方法未使用, 編譯會提示warning, 這些可以忽略, 只要Errors數量為0
11. 用STC-ISP燒錄在
STC-ISP中選中對應的芯片信號, 點擊"打開程序文件", 選中剛才生成的hex文件, 文件位置在項目的Objects目錄下. 然后點擊"下載/編程", 給芯片重新上電后, 就會下載并運行.
12. 觀察串口輸出
使用任意串口工具, 使用波特率115200連接對應的串口, 可以看到間隔1秒輸出的"T40UString".
13. 運行其他用例
如果需要運行其他用例, 將剛才的用例文件從項目樹中移除, 再按照前面的流程, 重新添加其他的用例文件就可以了.
2022-01-05_023.png (302.65 KB, 下載次數: 101)
下載附件
2022-1-5 21:10 上傳
也可以自行創建文件編寫代碼
結束
以上就是針對Keil5環境, 使用FwLib_STC8封裝庫進行環境配置和運行演示用例的說明, 如果有問題請留言
|