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

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

自從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

相關焦點

  • STM32 uCOS_II 實踐 之 外部中斷事件 及 系統運行過程
    在進行uCOSII的程序之前先來複習下,裸機平臺下stm32的外部中斷的操作。大概可以分作4個步驟:1-配置相應管腳為浮空輸入;2-配置相應管腳為外部中斷口並設定其中斷屬性及參數;3-配置NVIC相關寄存器,設定中斷優先級;4-編寫中斷服務函數。
  • 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——可以添加的硬體模塊驅動,
  • Keil創建新的STM32工程以及CortexM3的位帶操作
    從新建一個工程開始學習,再加上上周實驗課的位帶操作相關內容,有需要的同學可以看看,也希望指正相關錯誤:)本文引用地址:http://www.eepw.com.cn/article/201611/318090.htm1.新建工程  在keil中新建一個基於51的工程挺簡單,不過新建一個STM32工程
  • STM32 keil printf的使用
    請在MDK(keil)工程屬性的「Target「-》」Code Generation「中勾選」Use MicroLIB本文引用地址:http://www.eepw.com.cn/article/201611/315976.htm前提是你有一個完整keil的工程 比如ADC的調試的時候很多時候用到串口
  • 超另類:在vscode下實現編譯仿真下載,你絕對想不到
    生命在於運動,技術在於折騰,你是否厭倦了在keil、iar下孜孜不倦的寫代碼、debug,是否玩累了在外部編輯器下寫代碼,然後在轉到ide下進行仿真、下載等操作呢?這個教程將介紹下如何在vscode下實現這些操作,真正實現一個vscode可以吃天、實現編譯仿真下載一條龍服務,而你只需要在vscode下的終端敲幾個命令而已。。。
  • printf()函數重定向到STM32串口輸出
    最近遇到需要MCU輸出數字的問題,而STM32的串口輸出的是字符型,最先想到的方法是將整型數據轉換為字符型輸出,C庫函數中提供了相關的函數參考:http://www.cnblogs.com/processakai/archive/2011/06/24/2089348.htmlhttp://c.biancheng.net/cpp
  • STM32工程模板建立之新建工程(二)
    該小節講述的內容針對工程,也就是說當你將整個工程模板複製到其他電腦中打開時,配置將不變。但是當低版本 KEIL 軟體建立的工程在高版本 KEIL 打開時會出現問題,不過軟體會自動更正,不必擔心,實在不行只能重新設置了。
  • 基於STM32的 USB設計 --單片機程序篇
    獲取各種描述信息後,作業系統會為其配置相應的資源。這樣主機就可以與設備之間進行通信了。  usb通訊有四種通訊方式控制(control)、中斷(interrupt)、批量(bulk)和同步( synchronous)。usb通訊是通過管道(pipe)實現的。管道是一個抽象的概念,指的是主機與設備之間通訊的虛擬鏈路。
  • Ubuntu系統下安裝stm32官方開發工具STM32CubeIDE
    大家好,遊學電子科技為您帶來:Ubuntu系統下安裝stm32官方開發工具STM32CubeIDE。STM32CubeIDE是st意法官方提供的stm32開發工具,這款工具在編譯速度上具有比較高的優勢,尤其是跟keil5相比真是沒得說。
  • 使用Platform Builder配置Windows CE作業系統
    Windows CE是一個功能強大的開放的32位實時嵌入式作業系統,適用於快速構建新一代內存少、體積小的智能設備,例如工業控制器、手持式設備、智慧型電話、機頂盒和零售點設備等。不僅如此,Windows CE也為開發智能行動裝置提供了新一代可剪裁的嵌入式系統平臺。
  • Keil環境下STM32工程加入cJSON
    您可以導出完整物模型,用於雲端應用開發;您也可以只導出精簡物模型,配合設備端SDK實現設備開發。2、拷貝整個cJSON源文件到工程的根目錄下:4、添加cJSON.c文件夾至工程中:添加完畢之後,工程目錄顯示格式:
  • Spring Boot 配置文件的多環境實現
    EnvironmentPostProcessor接口的實現類之一,該接口只規定了一個方法,postProcessEnvironment,該方法包含兩個參數,一個是應用環境,一個是應用。功能就是根據應用和應用環境的當前現狀,對應用環境作進一步的加工。
  • 51,AVR,PIC,MSP430,STM32單片機比較
    IDE環境推薦 keil。編程器自己自製ISP下載線就行,好做,成本5元左右。STC12系列宏晶沒給出keil驅動。工具支持沒有自己的,要用keil的,在深層應用上會出現隱患。IDE:keil頭文件:宏晶網站上有,或者用at89x52.h,新的寄存器自己定義一下就行或者自己寫一個頭文件(推薦)。
  • 「STM32」「02」STM32CubeIDE教程_工程的配置1
    0 序言上一篇文章介紹了如何使用STM32CubeIDE建立新的工程以及界面上的功能。本文將繼續講解如何對工程進行配置,此處涉及的知識點較多,是很重要的一個環節。1 配置界面的介紹(STM32CubeMX界面)對工程的配置主要是通過原來的STM32CubeMX的工具來操作,上一篇文章已經講過,STM32CubeIDE使用圖形界面的方式來配置STM32的工程,它會自動生成配置代碼,要比原來使用標準庫時自己寫代碼配置工程可靠的多。
  • 【編程基礎學習教程】Keil(MDK-ARM)介紹、下載、安裝與註冊
    下面詳細介紹Keil C51開發系統各部分功能和使用。C51工具包的整體結構,如圖(1)所示,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE本身或其它編輯器編輯C或彙編源文件。然後分別由C51及A51編譯器編譯生成目標文件(.OBJ)。
  • STM32 Keil仿真進不了Main()函數
    下面新建STM32MxCube工程,開始配置。這裡我們配置IO(定義PF9、PF10引腳為LED)、RCC(使用HSE)、USART(串口)。配置USART(串口)USART的配置有好幾種,也是最常見的一種」UART異步串行通信」配置來講述。選擇USART2模式為「asynchronous」(異步通信)對應的引腳自動轉換為USART。
  • stm32通用定時器用做外部脈衝計數器的例程
    最近幾天要用到stm32對外部輸入脈衝進行計數,很自然想到定時器,可是手上資料沒有講解stm32定時器如何用作外部計數器的,在網上找例程,也沒找到幾個正確的,自己硬著頭皮仔細研究參考手冊,終於知道如何配置了,並寫了一個例程,希望將來對一些網友有用。