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