自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 Pend Lists

typedef  struct  os_pend_data        OS_PEND_DATA;    //在等待对象任务的堆栈中分配  即OSxxxPend()所在任务typedef  struct  os_pend_list        OS_PEND_LIST;       //被封装到OS_PEND_OBJ中typedef  struct  os_pend_obj

2016-02-21 19:28:42 737

原创 os_pend_multi.c

这个功能没有用过。OS_OBJ_QTY  OSPendMulti (OS_PEND_DATA  *p_pend_data_tbl,                         OS_OBJ_QTY     tbl_size,                         OS_TICK        timeout,

2016-02-21 19:21:27 1112

原创 os_int.c

uC在处理从中断中post事件有两个模式:Direct、Deferred Post 。配置OS_CFG_ISR_POST_DEFERRED_EN选择两种模式。个人比较倾向于Direct。此文件中的函数与Deferred有关。typedef  struct  os_int_q            OS_INT_Q;struct  os_i

2016-02-21 19:19:13 835

原创 os_flag.c

typedef  struct  os_flag_grp         OS_FLAG_GRP;struct  os_flag_grp {                                       /* Event Flag Group                                       */

2016-02-21 19:16:53 1099

原创 os_mem.c

typedef  struct  os_mem              OS_MEM;struct os_mem {                                             /* MEMORY CONTROL BLOCK                                   */    OS_OBJ_TYPE

2016-02-21 19:14:36 407

原创 os_mutex.c

Mutex:一种特殊类型的binary semaphores,可以克服优先级翻转。typedef  struct  os_mutex            OS_MUTEX;struct  os_mutex {                                          /* Mutual Exclusion Semaphore

2016-02-21 19:13:42 585

原创 os_sem.c

共享资源的方法:关中断、关调度器、Sem、Mutex。    关中断:任务与中断共享资源的唯一方法(CPU_SR_ALLOC(); CPU_CRITICAL_ENTER(); *****;  CPU_CRITICAL_EXIT();)。        关调度:当调度被关闭的时候,中断是开启的,当中断发生时,ISR会立即执行,执行完不管有没有高优先级的任务,都会回到被中断的任务。(OSSch

2016-02-21 19:10:22 1617

原创 os_q.c

生产者、消费者模式是个好东西,可以多多利用。typedef  struct  os_q                OS_Q;struct  os_q {                                              /* Message Queue

2016-02-21 19:06:42 582

原创 os_msg.c

typedef  struct  os_msg              OS_MSG;typedef  struct  os_msg_pool         OS_MSG_POOL;typedef  struct  os_msg_q            OS_MSG_Q;struct  os_msg {

2016-02-21 19:04:10 576

原创 os_task.c

typedef  struct  os_tcb              OS_TCB;struct os_tcb {    CPU_STK             *StkPtr;                            /* Pointer to current top of stack                        */任务栈顶

2016-02-21 18:59:58 2344

原创 os_tmr.c

回调函数OS_TMR_CALLBACK_PTR在OS_TmrTask的上下文中执行,执行时调度器锁状态,在回调函数中需要确保不要有阻塞操作,并且要确保OS_TmrTask的堆栈不要溢出。typedef  void                      (*OS_TMR_CALLBACK_PTR)(void *p_tmr, void *p_arg);typedef  st

2016-02-21 18:55:24 1383

原创 os_time.c

void  OSTimeTick (void):    处理System Tick,在System Tick中断函数中调用。    调用钩子函数,根据OS_CFG_ISR_POST_DEFERRED_EN给OSTickTask发出Sem,根据OS_CFG_SCHED_ROUND_ROBIN_EN调用时间片轮询,根据OS_CFG_TMR_EN当OSTmrUpdateCtr==0时给OST

2016-02-21 18:54:06 532

原创 os_tick.c

typedef  struct  os_tick_spoke       OS_TICK_SPOKE;struct  os_tick_spoke {    OS_TCB              *FirstPtr;                          /* Pointer to list of tasks in tick spoke

2016-02-21 18:50:32 2146

原创 os_core.c

os_core.c  :OS的核心函数(例如:OSInit()初始化uC , OSSched()任务级别调度 , OSIntExit() 中断级别调度,pend,post,PendList,RdyList管理等)。void  OSInit (OS_ERR  *p_err):    调用初始化钩子函数  (设置中断使用的堆栈地址)    初始化系统全局变量

2016-02-21 18:46:53 1213

原创 os_prio.c

CPU_DATA   OSPrioTbl[OS_PRIO_TBL_SIZE];    //bitmap定义  保存要运行和正在运行任务的优先级void  OS_PrioInit (void)   :    清空bitmap(OSPrioTbl) OS_PRIO  OS_PrioGetHighest (void) :    确定最高优先

2016-02-21 18:42:54 806

原创 Ready List

typedef  struct  os_rdy_list         OS_RDY_LIST;struct  os_rdy_list {    OS_TCB              *HeadPtr;                           /* Pointer to task that will run at selected priority

2016-02-21 18:40:35 500

原创 uC CPU port

cpu_core.c  :CPU相关初始化(时间戳,测量中断时间,CPUName),模拟CLZ(count leading zeros)指令,测量中断关闭时间方法等。cpu_core.h :cpu_core.c的函数、变量声明。cpu_def.h  :CPU模块使用的各种#define(大端小端字节序、堆栈的增长方向、Critical Section处理)cpu.h  :CPU模块

2016-02-21 18:37:24 1302

原创 uC OSIII port

os_cpu.h  :    OS_TASK_SW()、OSIntCtxSw()任务切换宏声明、OSStartHighRdy()、OS_SysTick相关方法声明。    OS_CPU_CFG_SYSTICK_PRIO:设置SysTick的中断优先级  中断优先级只有高四位有效    OS_CPU_ExceptStkBase:MSP中断使用的堆栈地址

2016-02-21 18:35:41 791

原创 读uCOSIII源码笔记

首先谈一下自己读RTOS的粗略认识吧,刚开始接触单片机时使用的都是while(true),一个循环处理所有的任务。直到写了一个通过GPRS模块与上层服务通信(长连接)之后,才发现在while(true)中处理好恶心,老是掉线之后连接不上。可能是对AT指令的处理没有搞好,就开始各种找怎么解决,接触到了uC/OSIII,阅读了他提供的文档,阅读了源代码,慢慢看,感觉进步很多,用着用着就爱上了。

2016-02-21 18:31:59 8100

原创 Atomthreads&STM8S207C8

Atomthreads is a free, lightweight, portable, real-time scheduler for embedded systems.在STM8S207C8上跑AtomThreads嵌入式系统,AtomThreads官网有移植到STM8S207C8的工程可以下载。

2015-08-31 18:49:48 3682 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除