久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1928|回復: 1
收起左側

ucos操作系統的STM32移植

[復制鏈接]
ID:470360 發表于 2019-3-1 20:30 | 顯示全部樓層 |閱讀模式
實驗二、ucos操作系統的移植
一、實驗目的
1、掌握ucos到STM32的移植方法;
2、熟悉通過C語音處理底層寄存器的技巧;
3、了解STM32在ucos任務切換時的處理;
4、規范編程格式。
二、實驗內容
本次實驗通過用C語言編寫6個操作系統相關函數和用匯編語言編寫4個與處理器相關的函數,將實時操作系統µC/OS-Ⅱ移植到芯片STM32F103ZE中,并創建兩個用戶任務點亮led。學會操作系統的移植方法,深入掌握嵌入式操作系統µC/OS-Ⅱ在初始化任務和任務調度的實現方法,直觀了解實時操作系統的體系結構和設計思想。

三、預備知識
基本單片機硬件知識、單片機軟件編程語言、程序創建和調試的基本方法、ucos操作系統的任務調度原理、STM32的寄存器架構。

四、實驗設備及工具
硬件:STM32開發平臺
軟件:STM32官方庫;PC機操作系統Windows 98、Windows 2000或Windows XP;KEIL MDK集成開發環境;串口轉usb驅動。
五、實驗步驟
1、按實驗一的步驟新建一個工程Proj2_ucos。
2、將移植好的ucos源代碼整個拷貝到我們的新建的工程目錄中,然后按對應的文件路徑添加到keil工程里(os_dbg.c和os_dbg_r.c只添加一個),如圖6和圖7。


圖6                                                   圖7

3、配置工程相關屬性(與實驗一庫應用配置一樣),記得將ucos的頭文件路徑添加到工程的include path上面去,找到stm2f10x_it.c的PendSV_Handler函數注釋掉,main文件中將includes.h包含進來,主函數為空,編譯通過。
4、在main.c中建立sys_init()函數編寫操作系統運行需要的硬件相關初始化(見代碼),然后修改stm32f10x_it.c中的系統心跳中斷函數并加入頭文件includes.h(見代碼,)。

        
/*********************************************************************
   
* 函數名稱:sys_init
   
* 函數功能:嵌套向量中斷優先級分組,時鐘心跳定時初始化1/200 s
   
* 參數: 無
   
*********************************************************************/
   
void    sys_init()
   
{
   
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
   
    SysTick_Config(SystemCoreClock/200);
   
}
   
   
         
        
/**
   
  * @brief     This function handles SysTick Handler.
   
  * @param     None
   
  * @retval None
   
  */
   
void    SysTick_Handler(void)
   
{
   
    OSIntEnter();
   
    OSTimeTick();
   
    OSIntExit();   
   
}


5、編寫用戶任務函數和相關的初始化。

        
/*****************************************************
   
* 函數名稱: led_init
   
* 函數功能: 初始化LED
   
* 參    數:
   
* 其    他:
   
********************************************************/
   
void    led_init()
   
{
   
    GPIO_InitTypeDef gpin_init_struct;
   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,    ENABLE);
   
    gpin_init_struct.GPIO_Pin = GPIO_Pin_5;
   
    gpin_init_struct.GPIO_Speed =    GPIO_Speed_2MHz;
   
    gpin_init_struct.GPIO_Mode =    GPIO_Mode_Out_PP;
   
    GPIO_Init(GPIOB, &gpin_init_struct);                //B口led1
   
    GPIO_Init(GPIOE, &gpin_init_struct);                //E口led2
   
}
   
   
         
        
/*****************************************************
   
* 函數名稱: my_task
   
* 函數功能: 用戶任務   
   
* 參    數:
   
* 其    他:
   
********************************************************/
   
void    my_task()
   
{
   
    sys_init();
   
    led_init();
   
    OSStatInit();
   
    while(1)
   
    {
   
        LED1_ON;
   
        LED2_OFF;
   
        OSTimeDly(50);
   
        LED1_OFF;
   
        LED2_ON;
   
        OSTimeDly(100);
   
    }
   
}
   


6、最后在主函數中創建任務并啟動操作系統。編譯并調試運行。

        
#include    "stm32f10x.h"
   
#include    "includes.h"
   
   
#define    LED2_ON     GPIO_ResetBits(GPIOB,    GPIO_Pin_5)
   
#define    LED2_OFF    GPIO_SetBits(GPIOB,    GPIO_Pin_5)
   
#define    LED1_ON     GPIO_ResetBits(GPIOE,    GPIO_Pin_5)
   
#define    LED1_OFF    GPIO_SetBits(GPIOE,    GPIO_Pin_5)
   
   
OS_STK    task_stk[128];
   
void    my_task(void);
   
void    led_init(void);
   
void    sys_init(void);
   
int main()
   
{
   
    OSInit();
   
    OSTaskCreate(my_task, (void *)0, (OS_STK    *)&task_stk[127], 10);
   
    OSStart();
   
    while(1);
   
}
   
回復

使用道具 舉報

ID:675926 發表于 2019-12-28 11:33 | 顯示全部樓層
你好,謝問有無完整的項目源碼?謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: a网站在线观看 | 成人免费看电影 | a级在线| 国产精品自产拍在线观看蜜 | 日韩精品在线看 | 亚洲一二三区在线观看 | 在线视频 亚洲 | 激情久久久久 | 婷婷五月色综合香五月 | 久久国产欧美日韩精品 | 99亚洲精品 | 午夜精品一区 | 欧美久久久久久 | 日韩国产一区二区三区 | 国产高清一区二区三区 | 国产成人精品区一区二区不卡 | 色偷偷888欧美精品久久久 | 日韩国产专区 | 日韩国产在线 | 欧美在线天堂 | 草草草久久久 | 欧美黄视频 | 国产精品久久久亚洲 | 国产精品欧美一区二区三区 | 久久午夜精品 | 精品国产视频在线观看 | 亚洲精品国产一区 | 亚洲精品视频在线观看视频 | 亚洲一区二区三区免费在线观看 | 日韩中文字幕一区二区 | 成人在线视频观看 | 亚洲狠狠爱 | 精品不卡 | 激情五月婷婷在线 | 精品福利在线 | 国产精品一区二区三 | 亚洲性视频 | 国产成人综合在线 | 国产区在线观看 | 久久这里有精品 | 日本在线小视频 |