寫在前面:
由于時間的不足與學習的碎片化,寫博客變得有些奢侈。
但是對于記錄學習(忘了以后能快速復習)的渴望一天天變得強烈。
既然如此
不如以天為單位,以時間為順序,僅僅將博客當做一個知識學習的目錄,記錄筆者認為最通俗、最有幫助的資料,并盡量總結幾句話指明本質,以便于日后搜索起來更加容易。
標題的結構如下:“類型”:“知識點”——“簡短的解釋”
部分內容由于保密協議無法上傳。
點擊此處進入學習日記的總目錄
2024.02.29
- 四、UCOSIII:新建工程
- 1、創建文件夾
- 2、新建工程
- 五、UCOSIII:調試配置
- 1、設置軟件仿真
- 2、修改時鐘大小
- 3、添加頭文件路徑
- 六、UCOSIII:調試模式中示波器的使用
- 1、 在app.c中編寫main函數
- 2、調試模式
- 3、使用示波器
- 4、常見錯誤
- 1. Build時報錯 Error: L6218E
- 2. keil5軟件仿真沒有實時波形
- 3. Build時報錯 error 65
- 4. Peripherals顯示空白
- 5. 調試模式時,程序前沒有灰塊
四、UCOSIII:新建工程
1、創建文件夾
文件夾名稱 | 子文件夾 | 孫文件夾 | 文件夾作用 |
---|---|---|---|
Doc | · | · | 用于存放對整個工程的說明文件,如readme.txt。通常情況下,我們都要對整個工程實現的功能、如何編譯、如何使用等做一個簡要的說明 |
Project | · | · | 用于存放新建的工程文件 |
User | uC/OS-III | Source | 用于存放μC/OS-III源碼,其中的代碼是純軟件相關的,與硬件無關 |
User | uC/OS-III | Ports | 用于存放接口文件,即μC/OS-III與CPU連接的文件,也就是我們通常所說的移植文件。要想μC/OS-III在單片機上運行μC/OS-III,這些移植文件必不可少 |
User | uC-CPU | · | 用于存放μC/OS-III根據CPU總結的通用代碼,只與CPU相關 |
User | uC-LIB | · | 用于存放一些C語言函數庫 |
· | · | 用于存放用戶程序,如app.c,main()函數就放在app.c文件中 |
起文件夾名字一定不要用μ
,Keil無法識別這個字符,會報一堆錯,未來的我連夜回來修改博客(哭)
2、新建工程
- 在
Project
文件夾新建項目
- 起一個英文名字
- 選擇
ARMCM3
如果沒有
ARM
的話,參考以下文章:
5.38版本的 Keil5 下載、安裝、激活 ——2024年1月20日
我發現我的Keil沒有ARM的Pack
,Pack Installer
還是灰色無法點的,只能花了一中午重裝了Keil,太傷心了
- 設置運行環境
選擇好處理器,單擊OK
按鈕后會彈出Manage Run-Time Environment
選項框。這里我們在CMSIS
欄選中CORE
和Device
欄選中Startup
這兩個文件即可
單擊OK
,CORE
和Startup
這兩個文件就會添加到我們的工程組里面。
其中startup_ARMCM3.s
是匯編編寫的啟動文件,system_ARMCM3.c
是C語言編寫的跟時鐘相關的文件。 更加具體的可直接閱讀這兩個文件的源碼。只要是Cortex-M3
內核的單片機,這兩個文件都適用。
- 添加文件組
在工程里面添加User
、μC/OS-III Source
、μC/OS-III Ports
、μC/CPU
、μC/LIB
和Doc
這幾個文件組, 用于管理文件
鼠標右鍵Target1
,在彈出的選項里面選擇Add Group
即可添加文件組
- 添加文件
分別在User
文件夾中新建app.c
,在Doc
文件夾中新建readme.txt
將文件添加到工程中,添加方式是雙擊文件組并選擇文件
五、UCOSIII:調試配置
1、設置軟件仿真
2、修改時鐘大小
在系統初始文件中,規定時鐘為25M
在軟件仿真的時候,確保時間的準確性,代碼里面的系統時鐘跟軟件仿真的時鐘必須一致, 所以Options for Target->Target
的時鐘應該改成25M
但是本人的keil時鐘修改選項是灰色的,查了一下資料才發現是版本的問題
參考資料:
keil5.36無法修改XTL時鐘,導致軟件調試時定時時間錯誤的解決方法
如果是高版本的keil,應該是不需要修改時鐘選項(猜測)
3、添加頭文件路徑
六、UCOSIII:調試模式中示波器的使用
1、 在app.c中編寫main函數
圖示與程序如下:
int flag1;
int flag2;void delay(int count)
{for (; count!=0; count--);
}int main(void)
{/* 無限循環,順序執行 */for (;;){flag1 = 1;delay( 100 );flag1 = 0;delay( 100 );flag2 = 1;delay( 100 );flag2 = 0;delay( 100 );}
}
點擊Build
,保證程序沒有錯誤,不然的話無法進入調試模式。
2、調試模式
- 進入調試模式
- 只有在程序前出現灰塊的程序才會運行
3、使用示波器
-
打開示波器
-
把變量加到示波器中
-
把變量的顯示改為
bit
-
點擊
Run
,運行程序
-
示波器顯示如下
4、常見錯誤
1. Build時報錯 Error: L6218E
修改后如下:
參考資料:
Error: L6218E: Undefined symbol ImageARM_LIB_STACKZILimit (referred from startup_armcm4.o)
2. keil5軟件仿真沒有實時波形
在view中點擊 period windows update 即可
參考資料:
keil5軟件仿真沒有實時波形
3. Build時報錯 error 65
參考資料:
keil仿真和使用邏輯分析儀調波形
4. Peripherals顯示空白
參考資料:
Peripherals顯示空白?
5. 調試模式時,程序前沒有灰塊
- 將優化等級選為
-O0
,但可能會加大最終代碼大小
- 然后重建工程
- 進入調試界面,問題解決
參考資料:
keil5軟件仿真stm32設置 和 調試技巧