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

2020-12-21 電子工程世界網

自從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鎖死STM32F103C8T6的解決方法

先前畫的一款電機驅動板,今天總算有時間調試了,,,效果如上,實驗室裡面的洗板水用沒了。。。。沒有辦法收拾的乾淨了,LED 沒了。。。 接線端子開關也沒了。。。條件很艱苦 進入正題,上圖主控是STM32F103C8T6就是網上賣的最便宜的那種。出現的問題時keil下載不進去程序。提示是這樣玩的我先用j-link自帶的工具j-flash進行了測試確定了晶片是可以通訊並且可以進行hex文件的燒錄的。這樣定位問題應該是keil 的配置出了問題。 keil也不是一直出問題。某一次 也是可以下載的。經過多次嘗試,我發現當我用j-flash擦除晶片並且解鎖unsecure晶片之後keil可以正常的下載程序。 然後就

發表於 2020-04-11

ST-Link 在keil5無法下載程序解決辦法

以前一直在用J-Link下載程序,由於工作需要,換成ST-Link下載程序。第一次用ST-Link怎麼也下載不下去,後來查CSDN博客:https://blog.csdn.net/zeroice7/article/details/59483155 找到解決辦法,就是,在Keil安裝目錄下,C:Keil_v5ARMSTLink下找到升級文件「ST-LinkUpgrade.exe」,點擊,打開應用程式對ST-Link/V2執行升級,重新插拔ST-Link,就可以下載程序了,

發表於 2020-03-12

使用Keil5建立MSP432工程

    MSP432是德州儀器推出的新一款高性能低功耗處理器, Cortex -M4內核,較430相比處理能力大大增強,同時採用了430設計的低功耗技術,和傳統ARM相比功耗更低,相信在不久的未來,TI將會推出更多的MSP432系列處理器,MSP432也會得到廣泛應用,這裡介紹一下如何使用keil5新建一個MSP432工程。    1.準備工作:打開keil5的Pack Installer,選擇要安裝的晶片包,我使用的是MSP432P401R晶片,安裝好對應的晶片包。        在KEILv5的目錄下,可以從剛剛下載的晶片包中找到相關驅動庫,為避免

發表於 2020-02-27

MDK(KEIL5)如何生成.bin文件

最近師傅要求我們利用keil5生成.bin文件,但是在網上查找了很多資料,也按照網上的方法來設計,但是結果都不如意,沒有出來。今天早上有折騰了一段時間,歷經千辛萬苦,終於生成了.bin文件了。雖然寫得有點囉嗦,看起來比較繁瑣,但一步一步跟著操作,你會發現還是很簡單的,下面分享一下,希望能幫到各位小夥伴。由於語言和能力不足,如果有錯,還勞煩大佬斧正。生產.bin文件方法有兩種,一種是打開安裝路徑中的中的fromelf.exe,另一種是如我下圖所示方法。下面我介紹下我所有的方法。點擊User欄,將Run#1打勾,並在後面的方框中填入生成.bin的路徑。我的路徑為:fromelf(一個空格) --bin(一個空格) --output

發表於 2020-01-19

單片機成長之路(51基礎篇) - 018 keil51的STARTUP.A51

STARTUP.A51原始文件:  1 $NOMOD51;Ax51宏彙編器控制命令,禁止預定義的8051。使編譯器不使能預定義的;8051符號,避免產生重複定義的錯誤。  2 ;------------------------------------------------------------------------------  3 ;  This file is part of the C51 Compiler package  4 ;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software

發表於 2020-01-15

如何使用Keil5開發MSP430及Tiva系列開發板

如何使用keil5開發msp430,Tiva系列Launchpad系列是Ti德州儀器推出的一系列低成本開發評估套件,即使放到現在,這系列的MCU仍舊不失為一款優異的微控制器晶片。Ti Launchpad平臺的另一個系列板卡——Tiva C系列的TM4C123G Launchpad評估套件EK-TM4C123GXL,基於高性能的ARM Cortex-M4處理器。由於TI官方提供的CCS用起來很麻煩,安裝也很麻煩。故我們想辦法在MDK平臺上開發對吧。同樣大家也可以用IAR for msp430首先需要安裝MDK5即Keil5.未安裝的同學請轉此https://baijiahao.baidu.com/s?id

發表於 2020-01-15

相關焦點

  • 在Eclipse下編譯Keil MDK工程
    所以, 有時候你看到代碼還有一大堆的錯誤時, 編譯一次後, 刷新工程(右鍵工程名 -> "Refresh")就木有錯誤鳥.5. 到此, 可以編譯你的工程了. 通過菜單項"Project" -> "Build All"編譯工程, 或"Project" -> "Clean..."清理工程.
  • STM32開發環境(工具)之Keil MDK 介紹
    5.1.1 開發過程及集成開發環境簡介1. Keil的軟體開發周期使用Keil來開發嵌入式軟體,開發周期和其他的平臺軟體開發周期是差不多的,大致有以下幾個步驟:1. 創建一個工程,選擇一塊目標晶片,並且做一些必要的工程配置。2. 編寫C或者彙編源文件。3. 編譯應用程式。4. 修改源程序中的錯誤。5. 聯機調試。
  • stm32開發板例程講解之一:使用IAR 5.3建立工程
    本文將講述任何在IAR上建立一個project,並開始自己學習stm32的第一個實驗。New Project 創建一個項目 (empty 空白項目),保存到GPIO_IOTG文件夾下,如圖2:system_stm32f10x.c,系統環境設置,包括寄存器變量,運行頻率;DOC為說明文檔;EMARMv5組為系統啟動文件,根據自己的晶片類型和編譯的環境選擇不同的tartup;StdPeriph_Driver——可以添加的硬體模塊驅動,
  • STM32固件庫V3.5在Keil MDK環境下使用方法
    本文引用地址:http://www.eepw.com.cn/article/201611/322321.htm這篇教程分以下幾個方面,一:建立工程,設置工程屬性。二:建立條理清晰的GROUP;三:使用JLINK仿真調試。下面就分別逐個說明。
  • 超另類:在vscode下實現編譯仿真下載,你絕對想不到
    生命在於運動,技術在於折騰,你是否厭倦了在keil、iar下孜孜不倦的寫代碼、debug,是否玩累了在外部編輯器下寫代碼,然後在轉到ide下進行仿真、下載等操作呢?這個教程將介紹下如何在vscode下實現這些操作,真正實現一個vscode可以吃天、實現編譯仿真下載一條龍服務,而你只需要在vscode下的終端敲幾個命令而已。。。
  • 基於stm32的數字示波器設計方案
    該器件增益調節範圍為-6 db~+24 db,可調增益的-3 db帶寬為230mhz,可採取單電源或雙電源供電。主要用於數字控制自動增益系統、收發信號處理等領域。本設計主要使用其數字控制自動增益功能。ad8260內部的數字程控增益功能框圖如圖3所示。
  • 華大單片機MDK工程最小系統搭建過程講解
    華大的單片機開發,是可以使用IAR和KEIL,但因為我個人因為一直使用Keil,所以華大單片機我也使用keil開發,不過對版本有要求,需要KEIL5,推薦MDK5.26這個版本。接下來就安裝華大單片機的集成開發環境支持包,這個必須安裝,安裝後才能在MDK的device一欄選中對應的型號。
  • FreeRTOS 在STM32上的移植 V1.0
    FreeRTOS作為開源的輕量級實時性作業系統,不僅實現了基本的實時調度、信號量、隊列和存儲管理,而且在商業應用上不需要授權費。list.c 是一個鍊表的實現,主要供給內核調度器使用;queue.c 是一個隊列的實現,支持中斷環境和信號量控制;croutine.c 和task.c是兩種任務的組織實現。對於croutine,各任務共享同一個堆棧,使RAM的需求進一步縮小,但也正因如此,他的使用受到相對嚴格的限制。而task則是傳統的實現,各任務使用各自的堆棧,支持完全的搶佔式調度。
  • IAR STM32 函數和變量的絕對地址定位
    昨天我突然冒出個想法,能否利用函數和變量的絕對定位,實現程序的模塊化更新。也就是說,如果我要改變某個函數,只需要更新flash裡面一個局部,也許只需要更新幾百個字節,而無須重新下載整個上百K的程序。經過查找資料和反覆實驗,終於實現了,現總結如下:1) 把函數定位在FLASH高端的指定位置,以後更新,只更新那小塊地方就可以了。方法一: IAR裡面進行函數定位, 必須要在.icf裡面,進行定義。
  • 如何在虛擬機中安裝Fedora64位作業系統並配置環境
    使用典型類型配置2、安裝客戶機作業系統,選擇安裝程序光碟映像文件,Fedora-Workstation-Live-x86_64-32-1.6.iso指定磁碟容量5、準備進入安裝階段,包含名稱、位置、版本和作業系統等6、進入到開始Fedora安裝,選擇第一項
  • iot 作業系統 - CSDN
    Mynewt是一個專注於物聯網(IoT,Internet of Things)應用的實時作業系統,包括低功耗藍牙(BLE4.2)無線傳輸協議棧NimBLE。Mynewt支持豐富的實時作業系統特徵,可以在不同的硬體平臺上運行,包括ARM Cortex M0-M4微控制器,以及基於MIPS和RISC-V架構的處理器。
  • 為STM32開發者而打造的開發軟體-TrueStudio
    對於開發STM32工程師來說,keil-MDK編譯器似乎是唯一的編譯工具,不過現在情況發生了改變,因為意法半導體公司針對STM32開發了一款全新的編譯軟體-TrueStudio。TrueStudio是一個強大的基於Eclipse的C / C++集成開發工具。
  • 基於STM32的Mifare IC卡讀寫卡器設計
    系統以STM32F103C8T6為主控晶片,讀寫卡晶片採用MFRC522晶片(支持14443A協議,其頻率為13.56MHz),採用SPI通訊方式實現與Mifare IC卡的通訊;利用雙線並繞的方式設計PCB天線,大幅提高了讀寫卡器的天線信號強度和生產成品率。上位機軟體基於VC6.0底層代碼編寫,方便地實現了對Mifare IC卡的讀寫。
  • 2015年4月成人自考網絡作業系統考試真題
    D.輸入輸出管理層3.允許多個用戶將各自的作業提交給計算機系統集中處理的作業系統稱為A.強實時作業系統B.分時作業系統C.弱實時作業系統D.嵌入式作業系統4.一進程進入內存後,則其首先處於A.運行狀態B.等待狀態C.就緒狀態D.掛起狀態
  • windows,linux,unix以外,還有哪些不所熟知的作業系統
    unix系列VxWorks是美國 美國WindRiver公司於1983年設計開發的一種嵌入式實時作業系統(RTOS),是嵌入式開發環境的關鍵組成部分。Tornado 是WRS 公司推出的一套實時作業系統開發環境,類似MicrosoftVisual C,但是提供了更豐富的調試、仿真環境和工具。 廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通訊、軍事演習、彈道制導、飛機導航等
  • 企業級雲平臺如何應用Chef,實現雲端自動化配置管理
    在雲環境中,自動化部署是一項重要的工作,當前對於虛機的配置以及軟體和應用的自動化部署,很多企業級雲平臺都採用了Chef。Chef 是 IT 自動化平臺,也被稱為部署自動化工具和 DevOps 使能者,可讓用戶創建、部署、變更和管理基礎設施運行時的環境和應用。今天將與您分享Chef在雲管理服務中的應用。
  • keil C51中的本徵函數庫及使用說明
    本徵函數(intrinsicroutines)是指編譯時直接將固定代碼插入當前行,而不用ACALL和LCALL來實現(無需堆棧操作?),可大大提高函數的訪問效率.
  • 2015年4月自考作業系統概論真題
    (本大題共20小題,每小題1分,共20分)1.下列軟體中不屬於應用軟體的是(  )A.學籍管理軟體B.財務管理軟體C.鐵路訂票軟體D.接口軟體點擊進入:自考報名有疑問、不知道如何選擇主考院校及專業、自考當地政策不了解,點擊立即報考諮詢》》2.在配置多道批處理作業系統的計算機系統中
  • 單片機長在MDK下建立STM32工程二
    這一篇根據上一篇的結果繼續完善我們創建的工程。四、添加main.c文件在「new_project\user路徑下」直接新建一個main.c文件,當然也可以從別的工程挪一個過來。然後把main.c文件添加到工程的user條目下。