1. <th id="uou7b"></th>
        2. <tbody id="uou7b"></tbody>
          <tbody id="uou7b"></tbody>
        3. <span id="uou7b"></span>

          <tbody id="uou7b"></tbody>
          <em id="uou7b"></em>

          專注電子技術學習與研究
          當前位置:單片機教程網 >> STM32 >> 瀏覽文章

          ucos ii 移植到stm32f103ze上

          作者:佚名   來源:轉自追風空間   點擊數:  更新時間:2014年08月29日   【字體:

          采用別人移植好的代碼。即所需函數已寫好。

          準備工作:
          1、ucos ii源碼
          2、stm32庫
          步驟:
          1、建工程。
          工程目錄為:
          2、配置ucos ii
          在os_cfg.h中配置相關功能
          3、修改相關函數
          ucos ii需要一個定時器,在stm32中采用systick定時器,因此需要配置systick定時器
          void SysTick_Configuration(void)
          {
          //關計數
              SysTick_CounterCmd(SysTick_Counter_Disable); 
              //關中斷
              SysTick_ITConfig(DISABLE);
          //配置SysTick的時鐘源  此時為AHB時鐘
          SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
          //配置指系統句柄的優先級(Systick句柄  3號搶占優先級,0號子優先級)
          NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 3, 0);
          //設置重載值1ms中斷 HCLK=8M時
          SysTick_SetReload(800000);  
          //使能Systick中斷
          SysTick_ITConfig(ENABLE);
              //使能Systick計數即啟動計數
          SysTick_CounterCmd(SysTick_Counter_Enable);
          }
          需要systick定時器中斷,在中斷里面調用ucos的相關函數,以此來作為ucos的時鐘。
          void SysTickHandler(void)
          {
          OS_CPU_SR  cpu_sr;
          // OS_ENTER_CRITICAL();  //保存全局中斷標志,關總中斷
          //   OSIntNesting++;
          //   OS_EXIT_CRITICAL();  //恢復全局中斷標志
          OSIntEnter();
          OSTimeTick();
          OSIntExit();        
          }
           
          配置pendsv函數
          ucos通過pendsv來實現任務調試,因此需要在啟動代碼中更改pendsv
          將原來的PendSV改為
          OSPendSV
          否則,系統會卡在
          OSStartHang
              B       OSStartHang                                         ; Should never get here
          處。
          4、includes.h的編寫
           
           
          #ifndef  __INCLUDES_H__
          #define  __INCLUDES_H__
           
          #define   DEF_FALSE 0
          #define   DEF_TRUE  1
           
          #include    "ucos_ii.h"
          #include "os_cpu.h"
          #include "bsp.h"
          #include    "app.h"
          #include    "app_cfg.h"
           
          #include    "stm32f10x_conf.h"
          #include    
           
           
           
          #if (uC_PROBE_OS_PLUGIN > 0)
          #include    
          #endif
           
          #if (uC_PROBE_COM_MODULE > 0)
          #include    
           
          #if (PROBE_COM_METHOD_RS232 > 0)
          #include    
          #endif
          #endif
           
           
           
          #endif
           
          5、bsp函數配置
          stm32的相關硬件配置包括RCC、systick、NVIC、等,需要注意的是,systick定時器必須在OS啟動后才能啟動,否則,系統會崩潰。(這里有疑問,在OSStart執行前使能systick中斷,系統 還是能運行)
          6、編寫相關任務函數。
           
           
          總結,在移植UCOS時,需要編寫的函數文件有includes.h、os_cpu.c、os_cpu_a.asm、os_cpu.h、需要配置的文件有os_cgf.h、中斷和啟動代碼。
          關閉窗口
          日日噜噜夜夜狠狠久久无码区

              1. <th id="uou7b"></th>
              2. <tbody id="uou7b"></tbody>
                <tbody id="uou7b"></tbody>
              3. <span id="uou7b"></span>

                <tbody id="uou7b"></tbody>
                <em id="uou7b"></em>