文档介绍:多任务学****方法
多任务学****方法
篇一:多任务操作系统学****br/> 上级日后提拔的吉林“最美最狠强拆女市长”
篇二:单片机多任务编程方法介绍单片机多任务编程方法介绍
--Edan Lee
前言
从事单片机学****和工作已有多年,多年下来对单片机开发有一点自己的认识。想将自己的积累和大家分享。应该对初学者有一点帮助。还有很多不足的地方,欢迎来函探讨。因为文学功底不行所以直接进入主题。
主体内容
本文的主要目的是介绍在没有操作系统的多任务编程方法。所有例子都以51单片机为基础。
内容编排
1、多任务简介
2、任务分拆
3、软件定时器
4、系统架构
5、例子
多任务简介
对于单片机的多任务就是CPU处理多个任务。但是在同一个时间CPU只能处理一个任务。在处理多任务的时候其实就是将CPU分时复用。具体是在一个时间内处理一个任务,在接下来的时间里处理另一个任务。这个时间一般很短,在操作系统里就是指时间片。单片机因为资源少的原因很少会带操作系统来工作。但是可以从多任务的基本原本出发模拟操作系统的多任务。为了一个任务不会独占CPU,就将任务分成N个小任务。划分原则是在任务需要等待的地方划分。每次运行到这个任务的时候,CPU只执行其中的一个或者多个小任务。任务分拆
在一个LED闪烁的小程序中原理是点亮LED,延时,关闭LED,延时,循环。
#define LEDOn LED_Port = 0;
#define LEDOff LED_Port = 1;
sbit LED_Port = P1^0;
/*不精确延时*/
void Delay {
hile {
LEDOn {
LEDFlash {
static unsigned char step = 0; /*进程控制器*/
sitch {
case 0:
LEDOn {
static unsigned char step = 0; /*进程控制器*/
sitch {
case 0:
LEDOn= max= ?yx,否则为0。
这种方法的实现可以总结为Algorithm 1。注意到第四步是利用分解性质。更多细节请看补充材料1 Input: data matrix X, labels Y , and parameters α, β
Initialize: W0 = Z0 = λ0 = 0, μ= 10?6, μmax = 1010, ρ0 = , ε= 10?8, γ= 2,
maxIter= 103, k = 0.
Output: W
hile not converge, k <maxIter, do
1 ηk = 2/γ
2 Obtain stochastic gradient gk; build Lkμvia
3 Fix the others and update W by
4 Fix the others and update Z by:
5 Update the multiplier λ by: λk+1 = λk? μ
6 Update the parameter μ by: μ= min 7 Check the convergence conditions: Zk+1 ?Wk+1 ∞<ε
8 k