日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]4. uCOS配置uCOS是可裁減實(shí)時(shí)操作系統(tǒng),可以根據(jù)實(shí)際的應(yīng)用對內(nèi)核未使用到的功能進(jìn)行裁減,以進(jìn)一步節(jié)省系統(tǒng)寶貴的硬件資源,通??捎玫膗COS-II內(nèi)核代碼在6K~26K,這在uCOS-II配置文件os_cfg.h中進(jìn)行配置,這個(gè)配置文

4. uCOS配置

uCOS是可裁減實(shí)時(shí)操作系統(tǒng),可以根據(jù)實(shí)際的應(yīng)用對內(nèi)核未使用到的功能進(jìn)行裁減,以進(jìn)一步節(jié)省系統(tǒng)寶貴的硬件資源,通??捎玫膗COS-II內(nèi)核代碼在6K~26K,這在uCOS-II配置文件os_cfg.h中進(jìn)行配置,這個(gè)配置文件在源碼目錄為os_cfg_r.h,從目錄中拷貝添加到uCOS/uCOS-II/Cfg目錄中,并重命名為os_cfg.h。

#ifndef OS_CFG_H

#define OS_CFG_H

/* ---------------------------- MISCELLANEOUS -------------------------- */

#define OS_CFG_APP_HOOKS_EN 1u /* Enable/Disable application specific hooks*/

#define OS_CFG_ARG_CHK_EN 1u /*Enable/Disable argument checking*/

#define OS_CFG_CALLED_FROM_ISR_CHK_EN 1u /* check for called from ISR*/

#define OS_CFG_DBG_EN1u /* Enable (1) debugcode/variables */

#define OS_CFG_ISR_POST_DEFERRED_EN0u /* Enable/Disable DeferredISR posts */

#define OS_CFG_OBJ_TYPE_CHK_EN 1u /* Enable/Disable object typechecking*/

#define OS_CFG_TS_EN 1u /* Enable/Disable timestamping*/

#define OS_CFG_PEND_MULTI_EN 1u /* code generation formulti-pend feature */

#define OS_CFG_PRIO_MAX 32u /* maximum number of taskpriorities */

#define OS_CFG_SCHED_LOCK_TIME_MEAS_EN1u /* code to measure schedulerlock time */

#define OS_CFG_SCHED_ROUND_ROBIN_EN 1u /* code for Round-Robinscheduling */

#define OS_CFG_STK_SIZE_MIN 64u /* Minimum allowable taskstack size */

/* ----------------------------- EVENT FLAGS --------------------------- */

#define OS_CFG_FLAG_EN 1u /* Enable/Disable code forEVENT FLAGS*/

#define OS_CFG_FLAG_DEL_EN 0u /* Include code forOSFlagDel()*/

#define OS_CFG_FLAG_MODE_CLR_EN 0u /* code for Wait on ClearEVENT FLAGS*/

#define OS_CFG_FLAG_PEND_ABORT_EN 0u /* Include code forOSFlagPendAbort()*/

/* -------------------------- MEMORY MANAGEMENT ------------------------ */

#define OS_CFG_MEM_EN1u /* code generation for MEMORYMANAGER */

/* --------------------- MUTUAL EXCLUSION SEMAPHORES ------------------- */

#define OS_CFG_MUTEX_EN 1u /* code generation for MUTEX*/

#define OS_CFG_MUTEX_DEL_EN 0u /* code for OSMutexDel()*/

#define OS_CFG_MUTEX_PEND_ABORT_EN0u /* code for OSMutexPendAbort()*/

/* --------------------------- MESSAGE QUEUES -------------------------- */

#define OS_CFG_Q_EN 1u /* code generation for QUEUES*/

#define OS_CFG_Q_DEL_EN 0u /* Include code forOSQDel()*/

#define OS_CFG_Q_FLUSH_EN 0u /* Include code forOSQFlush()*/

#define OS_CFG_Q_PEND_ABORT_EN1u /* Include code forOSQPendAbort()*/

/* ----------------------------- SEMAPHORES ---------------------------- */

#define OS_CFG_SEM_EN 1u/* code generation for SEMAPHORES */

#define OS_CFG_SEM_DEL_EN 0u /* Include code forOSSemDel()*/

#define OS_CFG_SEM_PEND_ABORT_EN1u /* Include code forOSSemPendAbort()*/

#define OS_CFG_SEM_SET_EN 1u /* Include code forOSSemSet()*/

/* -------------------------- TASK MANAGEMENT -------------------------- */

#define OS_CFG_STAT_TASK_EN 1u /* Enable/Disable thestatistics task*/

#define OS_CFG_STAT_TASK_STK_CHK_EN1u /* Check task stacks fromstatistic task*/

#define OS_CFG_TASK_CHANGE_PRIO_EN 1u /* Include code forOSTaskChangePrio()*/

#define OS_CFG_TASK_DEL_EN 0u /* Include code forOSTaskDel()*/

#define OS_CFG_TASK_Q_EN 1u /* Include code forOSTaskQXXXX()*/

#define OS_CFG_TASK_Q_PEND_ABORT_EN0u /* Include code forOSTaskQPendAbort()*/

#define OS_CFG_TASK_PROFILE_EN 1u /* variables in OS_TCB forprofiling */

#define OS_CFG_TASK_REG_TBL_SIZE 1u /* Number of task specificregisters*/

#define OS_CFG_TASK_SEM_PEND_ABORT_EN1u /* Include code forOSTaskSemPendAbort()*/

#define OS_CFG_TASK_SUSPEND_EN 1u /* OSTaskSuspend() and OSTaskResume()*/

/* -------------------------- TIME MANAGEMENT -------------------------- */

#define OS_CFG_TIME_DLY_HMSM_EN 1u /* Include code forOSTimeDlyHMSM()*/

#define OS_CFG_TIME_DLY_RESUME_EN0u /* Include code forOSTimeDlyResume()*/

/* ------------------- TASK LOCAL STORAGE MANAGEMENT ------------------- */

#define OS_CFG_TLS_TBL_SIZE 0u /* code for Task LocalStorage (TLS) registers */

/* ------------------------- TIMER MANAGEMENT -------------------------- */

#define OS_CFG_TMR_EN 1u /*Enable/Disablecode generation for TIMERS */

#define OS_CFG_TMR_DEL_EN 0u /*Enable/Disable code generation for OSTmrDel()*/

#endif

5. 用戶代碼

用戶需要提供一個(gè)周期性定時(shí)中斷作為uCOS-II的運(yùn)行Tick,每個(gè)Tick需調(diào)用OSTimeTick()來讓內(nèi)核管理時(shí)鐘節(jié)拍,在s3c2416用定時(shí)器4產(chǎn)生這個(gè)系統(tǒng)Tick。在main()函數(shù)中需調(diào)用OSInit()初始化內(nèi)核,創(chuàng)建任務(wù)后,再調(diào)用OSStart()把cpu管理權(quán)交給內(nèi)核。內(nèi)核即可正確地管理用戶的任務(wù)。

#include "s3c2416.h"

#include "Exception.h"

#include "ucos_ii.h"

// IO port for controling LEDs

#define LED2 (13) // GPE13 LED2

#define LED3 (11) // GPE11 LED3

#define LED4 (13) // GPL13 LED4

#define LED5 (12) // GPE12 LED5

#define LED6 (2) // GPG2 LED6

OS_STKTaskStartStk[TASK_START_STK_SIZE];

OS_STK Task1Stk[TASK1_STK_SIZE];

OS_STK Task2Stk[TASK2_STK_SIZE];

OS_STK Task3Stk[TASK3_STK_SIZE];

static void Timer4_IRQ(void)

{

OSTimeTick(); // uCOS時(shí)鐘節(jié)拍管理

rSRCPND1 |= (0x01 <

rINTPND1 |= (0x01 <

}

void Timer4_Start()

{

rTCON |= (0x1 << 20); // 定時(shí)器開啟

}

void Timer4_Stop()

{

rTCON &= ~(0x1 << 20);// 定時(shí)器停止

}

void Timer4_Init()

{

// 定時(shí)器4時(shí)鐘頻率為PCLK(66.66666M)/(0+1)/16=4.166MHZ

rTCFG1 &= ~(0xf << 16);

rTCFG1 |= (0x3 << 16); // Timer4 16分頻

rTCFG0 &= ~(0xff << 8);

rTCFG0 |= (0 << 8); // PCLK預(yù)分頻為1

rTCNTB4 = 4166; // System Tick設(shè)1ms

rTCON |= (0x1 << 21); // 更新計(jì)數(shù)值

rTCON &= ~(0x1 << 21);// 清除

rTCON |= (0x1 << 22); // 自動(dòng)重裝載

IRQ_Register(INT_TIMER4,Timer4_IRQ); // 注冊Timer4中斷函數(shù)

rINTMOD1 &= ~(1 <

rINTMSK1 &= ~(1 <

}

void Gpio_LED2(unsigned char On)

{

if (!On) {

rGPEDAT &=~(1<

} else {

rGPEDAT |= (1<

}

}

void Gpio_LED3(unsigned char On)

{

if (!On) {

rGPEDAT &=~(1<

} else {

rGPEDAT |= (1<

}

}

void Gpi

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉