keil5.24創建uCOSIII工程實現stm32實時作業系統(環境配置)

2021-01-08 電子工程世界

自從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會自動把文件加到你的工程。牢記,帶鎖的文件肯定是不建議你修改的。


關鍵字:keil5  24  uCOSIII  stm32  實時作業系統 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/2018/ic-news100641524.html

推薦閱讀

Keil5中51單片機和MDK的整合的方法

不知道論壇的朋友們是怎麼處理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

keil5中找不到lpc2368的解決方法

在用lpc2368的時候在MDK5 Software Packs找不到lpc236在官網搜尋了一番找到了這個下載後完美解決問題

發表於 2020-07-03

使用keil5 搭建2440開發環境

手頭有一塊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

基於SmartARM2300開發板的ADS工程移植keil5工程

需求描述:最近在用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工程文件移植到KEIL5中

TQ2440的例程都是ADS環境下的,ADS已經是古董級的軟體,win7都不帶支持何況WIN10。考慮需求就嘗試將工程移植到keil5上。查找了大量資料,試驗加修改總算是移植成功了。文後附上所參考的地址。這裡總結一下,方便查看:keil環境配置打開keil,下載相關的內核,sumsung2440的。新建工程,選擇相關內核(會提示添加源文件,如果自己有就不要添加了,直接導入),將文件導入到工程,此處和導入STM32的h文件,c文件一樣注意拷貝文件時inc文件一定要和源文件在一個文件夾(不是指工程中,是你實際存放文件的文件夾裡)就是和2440init.s文件放一塊設置Target選項卡這裡SIZE可以自行設置1000000也行 那後面

發表於 2020-07-01

Micro2440 Nboot ADS 移植到Keil5編譯通過

由於項目需要開發老版本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

相關焦點

  • KEIL4 工程到 KEIL5 程序的移植方法
    由於 KEIL4 和 KEIL5 程序之間的差異, 所以 KEIL5 不能直接打開 KEIL4 的工程。 但是為了確保 KEIL5 向下的兼容性, ARM 公司為我們提供了兩種兼容 KEIL4 程序的方式。首先我們用 keil5 打開 keil4 的工程, 則會彈出下面的窗口, 這就是我們程序兼容的關鍵。
  • ARM DS-5開發STM32程序(Eclipse配合Keil插件使用)
    ARM DS-5是基於Eclipse的ARM開發環境,有完善的編譯流程,配合Keil插件開發STM32效果更佳。廢話不多,先介紹思路:1.安裝MDK軟體,就有編譯STM32的工具鏈。
  • 在Eclipse下編譯Keil MDK工程
    所以, 有時候你看到代碼還有一大堆的錯誤時, 編譯一次後, 刷新工程(右鍵工程名 -> "Refresh")就木有錯誤鳥.5. 到此, 可以編譯你的工程了. 通過菜單項"Project" -> "Build All"編譯工程, 或"Project" -> "Clean..."清理工程.
  • KEIL(MDK)同時兼容STM32和51系列單片機的方法
    破解結果方法二:下面這個方法可以讓keilMDK兼容51的工程,只要一個keil就都能編譯51和stm32的工程了:1、安裝keilC51,並破解,安裝目錄 T:keilC512、安裝keilMDK,並破解,安裝目錄 T:keilMDK3、把T:keilC51 裡面的 C51 文件夾複製到 T:keilMDK 裡4、把 T:keilC51 裡面的 UV4 文件夾複製到 T:keilMDK 裡,提示有同名文件都不要覆蓋
  • ST在keil下開發時候文件options配置的一些小技巧
    本文轉載自【微信公眾號:羽林君,ID:Conscience_Remains】總述這是之前ST晶片載keil下開發時候總結的一些代碼文件options配置小筆記,雖然不是很複雜但是在使用的過程中很方便,這裡給大家介紹一下。
  • STM32在keil下開發時候文件options配置的一些小技巧
    作者:良知猶存轉載授權以及圍觀:歡迎添加微信公眾號:Conscience_Remains總述 這是之前ST晶片載keil下開發時候總結的一些代碼文件options配置小筆記,雖然不是很複雜但是在使用的過程中很方便,這裡給大家介紹一下。
  • 跟著小白學STM32,keil工程模板也抄襲
    每次創建工程勾來勾去的感覺有些麻煩,所以需要建立一個keil工程模板,網上教程就很多了,你可以直接COPY正點原子的模板,也可以按教程一步一步創建屬於自己的模板。我也做了自己的一個工程模板,借鑑別人的很多,主要是原子的,比如直接使用了原子模板中system文件夾(去掉了usart兩個文件)。
  • 如何讓Keil MDK兼容Keil C51?
    原來我是先裝keilC51,後裝keilMDK的,裝在不同的目錄裡,裝完之後不管是51工程還是stm32工程默認都會用keilMDK打開,這樣打開51工程時會出錯,所以要打開51的工程必須先打開keilC51程序,然後再程序裡打開工程文件。
  • STM32開發環境(工具)之Keil MDK 介紹
    5.1.1 開發過程及集成開發環境簡介1. Keil的軟體開發周期使用Keil來開發嵌入式軟體,開發周期和其他的平臺軟體開發周期是差不多的,大致有以下幾個步驟:1. 創建一個工程,選擇一塊目標晶片,並且做一些必要的工程配置。2. 編寫C或者彙編源文件。3. 編譯應用程式。4. 修改源程序中的錯誤。5. 聯機調試。
  • 吃透單片機編程軟體,IAR單片機編程軟體創建stm32工程
    本文中,將為大家講解IAR單片機編程軟體建立stm32工程的詳細方法,希望大家通過本文能夠有所收穫哦。版本1:stm32是一個當下非常流行的微控制器,很多人都加入了學習stm32的行列中,常用的stm32編譯器有IAR和mdk兩種,接下來是利用stm32固件庫3.5在IAR下的建立的工程模板歷程:1、在常用的文件夾下新建立一個文件夾,根據個人喜好,分別建立如下幾個文件夾,用於分別存放固件庫中的文件和用戶自己的文件。
  • STM32cubeMX 基於stm32的定時器實現定時1秒LED閃爍
    8、生成工程,並添加相關程序; 首先,main.c程序中添加(放置於定時器配置之後)開啟 TIM1計時中斷;  /* USER CODE BEGIN 2 */    /*使能定時器1中斷吧,外設庫開發不要太方便,哈哈哈先去 stm32 社區逛了逛,發現了一個新字眼 STM32CubeMX,簡單看了下,大概明白是個 ST 公司新推出的一個配置工具,直接由圖形界面簡單配置下,生成初始化代碼,並對外設做了進一步的抽象,讓開發人員更只專注應用的開發,挺不錯的樣子,下來玩玩。
  • ucOS學習筆記(4)——一步一步移植ucOS到STM32
    因此我們需要在工程設置中的C/C++選項卡手動增加頭文件路徑,針對以上錯誤我們應該增加的頭文件路徑未.\Sourcee.再次編譯發生錯誤.\Source\ os_ii.h(44): error: #5: cannot open source input file "app_cfg.h": No s h file or directory這個問題應該不是原生 OS導致的,是micrium移植系統的時候修改了源文件,在其中增加了一些配置選項,這個配置選項保存在app_cfg.h中,但是micrium發布移植文件包的時候該文件又沒有包含在內
  • Keil MDK下學習STM32注意事項
    在MDK下學習使用STM32也快兩個禮拜了,基本掌握了STM32在MDK環境下的開發流程和基本硬體程序的書寫。其間,遇到了許多問題,其中不少問題花費了我相當多得時間才得以解決,現將這些問題和解決方法列出。其中也有一些是學習過程中我覺得需要記下的注意事項。
  • 在keil中怎麼燒寫程序
    Keil提供了包括C編譯器、宏彙編、連結器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟體需要WIN98、NT、WIN2000、WINXP等作業系統。如果你使用C語言編程,那麼Keil幾乎就是你的不二之選,即使不使用C語言而僅用彙編語言編程,其方便易用的集成環境、強大的軟體仿真調試工具也會令你事半功倍。
  • 超另類:在vscode下實現編譯仿真下載,你絕對想不到
    生命在於運動,技術在於折騰,你是否厭倦了在keil、iar下孜孜不倦的寫代碼、debug,是否玩累了在外部編輯器下寫代碼,然後在轉到ide下進行仿真、下載等操作呢?這個教程將介紹下如何在vscode下實現這些操作,真正實現一個vscode可以吃天、實現編譯仿真下載一條龍服務,而你只需要在vscode下的終端敲幾個命令而已。。。
  • RT-Thread創始人熊譜翔: 我和Linux、嵌入式實時作業系統RT-Thread
    窮學生都把錢拿去上網了……初創RT-Thread畢業後我的工作也基本上是和設備打交道,從最初在上海貝爾阿爾卡特時的VxWorks,到後來的NucleusPlus/ThreadX,可以說基本處於嵌入式設備及實時作業系統環境中,當然在這個過程中依然關注著Linux,關注著開源的發展。
  • printf()函數重定向到STM32串口輸出
    最近遇到需要MCU輸出數字的問題,而STM32的串口輸出的是字符型,最先想到的方法是將整型數據轉換為字符型輸出,C庫函數中提供了相關的函數參考:http://www.cnblogs.com/processakai/archive/2011/06/24/2089348.htmlhttp://c.biancheng.net/cpp
  • STM32入門實戰:強大、好用的嵌入式編譯器軟體Keil uVision5
    其中有一個選項是MDK-ARM,對應的就是Keil uVision5這個編譯器。只要您的電腦安裝配置好了這個編譯軟體之後,就可以直接打開生成的基礎代碼了,非常方便快捷。而嵌入式的軟體開發工具,用Keil和IAR的相對較多。
  • STM32再學習——集成開發環境IDE
    為了使開發更便捷,簡單,幾乎所有的MCU晶片都會有對應的集成開發環境(IDE),該環境囊括了軟體開發從編輯到可執行文件的所有工具,同時還包括常用的庫,調試工具,在線調試工具鏈等。  STM32主流的集成開發環境有兩種:IAR和MDK。