自從ARM keil升級到keil5系列版本後,Keil工具對作業系統,以及各種庫文件的移植大大簡化了
只需要動動手指,勾選一些庫文件就能實現移植工作了。
1:假設你安裝了keil 5.24(稍早點版本支持的os偏少),並且下載了你需要的支持包。
首先,安裝KEIL5,簡單 不作描述
其次,下載 PACK 簡單不作描述(根據具體的STM32期間選型相應的DFP文件)
下載需要的middle
下載需要的ucosiii
假設你用MCU晶片是stm32f10x,就點擊pack install 左邊選擇器件stm32f1系列,右邊把你要用的OS,arm基本庫,stm32f10x_DFP就是stm的庫支持包,以及編譯器自動在線更新好。
例如下圖,我選擇了DFP,CMSIS,編譯器,middleware,uCOSIII, freertos9(最近在看這個,就順手下了).
2: Keil創建工程
依次project-new project- 選擇位置,選擇器件,直到出現下面窗口,以前的教程都是讓你直接點擊cancel,然後去手動移植uCOS,手動安裝庫文件,這不是傻麼。
按下圖勾上core,startup,uCOSIII(還可以不用uCOS或者選擇華為的liteOS,或者熱門的FREERtos,前提是你在pack intall裡面先在線安裝了),點擊確認,第一個工程就建設好了。
請注意上面的藍色部分,stdPeriph Drivers ,這就是ST的官方庫,點擊進入,用到IO就勾上GPIO,用到串口就勾上Usart... 其中有2個是選了其他的就必選的。
一個是RCC,一個是framwork,記得只要都變綠了就正常了,如果沒有,就看看坐下,那些是關聯的,也勾上。
3:工程文件預覽
下面是我的示例工程,我用到了GPIO口輸出LED,模擬的時候可以看我的程序是否正常工作。
記住裡面的帶鎖的文件是不建議你修改的,這些文件是你的keil工程公用的,在Keil目錄下。
不帶鎖的文件都是給你修改的
RTE_Device.h是你的外設配置文件,打開後點擊下面的config wizard標籤,可以通過勾選來配置你的外設參數,例如使用埠,頻率,復用映射之類的。
設置後會關聯stm32f10x.conf.h,所以後者你不用管。
system_stm32f10x.c是系統初始化程序,新版本systeminit是自動調用,然後跳到main(的,你如果需要在main前初始化系統某些參數可以修改。
startup_stm32f10x_hd.s NVIC的中斷映射表,非常關鍵,需要修改,後面會提到。
RTOS下面是uCOSIII的文件。
其中app_cfg.c是空文件,是你的app.c的頭文件,不過我們一般都是用main.c main.h...
cpu_cfg.h 和 lib_cfg.g 是幾個簡單的CPU和Lib的參數,基本不用修改。
os_cfg.h 是OS的裁剪配置文件,就是關閉一些你用不上的函數和功能塊,例如消息隊列Q你沒用這個功能,那麼Q,Q的del,abort函數等,都能禁止,主要是減少代碼大小用的。按需要修改
os_app_cfg.h 系統心跳頻率,以及幾個系統任務stat systick tmr idle的優先級,堆棧大小等的配置參數。按需要修改。
os_cpu.c.c 沒錯,整個OS就這一個.c能讓你修改,因為這就是所有的空鉤子函數,你需要用到就填寫代碼好了,還有systick中斷處理函數也在這裡。
4 創建app.c添加到source gourp1 喜歡就單擊改個名字不叫source group1..
寫上你的main函數,創建你幾個任務。
例如任務1創建任務23,2亮閃爍LED1, 3閃爍LED2。
但是你會發現uCOS沒工作。
uCOS工作,需要幾個條件。
1:啟用systick定時器。
OS_CPU_SysTickInit(9000); // 72M下,8分頻,1ms心跳的初始值。
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //上面自帶的初始化頻率是72M,這裡選擇外部時鐘 HCLK/8
然後OSInit(); 創建主任務,OSStart();
2 中斷向量映射
OS需要用到2個中斷,一個是PendSV_handler,一個是SysTick_handler。
OS自帶了這2個中斷函數,但是名字是OS_CPU_PendSV_handler一個是OS_CPU_SysTick_handler.
以前的做法之一是把後面的改成前面的名字。但是這個新版本os_cpu_a.s是禁止修改的,說明keil不建議這樣做。
你如果不想用系統的,就得自己寫2個同名函數,但是沒必要。
那麼我們直接修改中斷向量表文件,把startup_stm32f10x_hd.s 裡面的PendSV_handler全替換成OS_CPU_PendSV_handler。
把SysTick_handler全替換成OS_CPU_SysTick_handler。 這個目的和結果和改名是一樣的。
不同晶片的中斷相連表文件會不同,如果不用OS,stm標準庫以前帶了個stm32f10x_it.c文件,裡面就是幾個系統中斷的同名函數。
5.24是沒有stm32f10x_it.c,bsp.c之類文件的。如果你沒用到uCOS,就需要自己寫這些函數了。
5 模擬仿真
按下面配置就能模擬仿真,並且監視IO波形圖,如果有串口,還能監測串口。
上面的圖2的配置是可以隨時修改的,也就是你想加個ADC,勾上,想用其他的外設庫,勾上,前提是你知道你勾上的是啥。。。。
Keil會自動把文件加到你的工程。牢記,帶鎖的文件肯定是不建議你修改的。
推薦閱讀
不知道論壇的朋友們是怎麼處理MDK和51的,在前一段時間,我是用Keil4來寫51,Keil5寫ARM。後來發現它兩其實可以整合到一塊。在這分享一下我的雕蟲小技。1.Keil5的安裝網上的教程非常之多,這裡我提供MDk526的包,雙擊安裝就行。x也在裡面。2.Software Packs下載選擇需要的晶片包下載,比如上圖的DFPXXX什麼的就是晶片包。我也提供了STM32F4系列還有TI的MSP432。3.51的導入使用stc官方的下載助手,一鍵導入。4.最終成型最終就可以在一個IDE裡編輯這兩種內核的了,當然C251內核的也可以這樣導入。連結:https://pan.baidu.com/s/1XPUoip
發表於 2020-09-18
在用lpc2368的時候在MDK5 Software Packs找不到lpc236在官網搜尋了一番找到了這個下載後完美解決問題
發表於 2020-07-03
手頭有一塊TQ2440的開發板,最近由於項目需要,需要用上,官方提供的源碼和uboot都是基於ADS,這麼老的開發環境當然不想用,當然使用keil了,去keil官網(http://www.keil.com/)發現,keil已經更新到keil5,於是打算鼓搗使用keil5了。打開官網下載:為了方便起見,我把相關資料上傳到我的百度云:keil521下載:連結:http://pan.baidu.com/s/1Cl8Ea 密碼:f4zx 註冊機下載:連結:http://pan.baidu.com/s/1En2FW 密碼:ixid老版晶片支持包連結
發表於 2020-07-03
需求描述:最近在用LCP2378做項目,需要用到此晶片上的CAN接口,官方給的例程中,是ADS平臺下的,根據我個人習慣,想在keil下進行開發,所以就需要將源碼轉換到keil平臺上,根據需要搭建好keil5的軟體環境(需要能支持LPC2XXX系列晶片支持包)。1.新建keil工程,選擇LCP2378晶片:2、會提示是否加載LPC2300.S可以選擇加載後可以刪除,這個文件相當於ADS裡面的Startup.s是程序啟動文件(就是復位、中斷、main跳轉之類的),由於將ADS工程移到這邊可以不需要keil自帶的LPC2300.S3、 將ADS工程文件全部考到Keil 工程文件夾下,後在工程中將文件都加入(除了scf文件),keil工程
發表於 2020-07-02
TQ2440的例程都是ADS環境下的,ADS已經是古董級的軟體,win7都不帶支持何況WIN10。考慮需求就嘗試將工程移植到keil5上。查找了大量資料,試驗加修改總算是移植成功了。文後附上所參考的地址。這裡總結一下,方便查看:keil環境配置打開keil,下載相關的內核,sumsung2440的。新建工程,選擇相關內核(會提示添加源文件,如果自己有就不要添加了,直接導入),將文件導入到工程,此處和導入STM32的h文件,c文件一樣注意拷貝文件時inc文件一定要和源文件在一個文件夾(不是指工程中,是你實際存放文件的文件夾裡)就是和2440init.s文件放一塊設置Target選項卡這裡SIZE可以自行設置1000000也行 那後面
發表於 2020-07-01
由於項目需要開發老版本S3C2440,由於時間有限系統當然跑WinCE6.0,軟體兼容性好 當然安裝開發工具等等一大堆是相當頭疼,之前做STM32特別多,個人電腦一大堆都是32的BSP包,keil用的特別順手,這次開發2440需要用到友善提供的Nboot,由於ADS軟體兼容行特差問題太多不想折騰了,將Nboot移植到keil5上,步驟1:需要下載keil下ARM9的支持包,給上邏輯 http://www2.keil.com/mdk5/legacy,下載Legacy support for Arm7, Arm9 & Cortex-R devices安裝即可。步驟2:將所有Nboot文件拷貝到keil工程下,如下:步驟
發表於 2020-06-13