当前位置:文档之家› 建立一个属于自己的AVR的RTOS

建立一个属于自己的AVR的RTOS

建立一个属于自己的AVR的RTOS
建立一个属于自己的AVR的RTOS

↓↓ 教程: 建立一个属于自己的A VR的RTOS (作者:hjc800323)回复数:245,点击数:26250

自从03年以来,对单片机的R TOS的学习和应用的热潮可谓一浪高过一浪.03年,在离开校园前的,非典的那几个月,在华师的后门那里买了本邵贝贝的《UCOSII》,通读了几次,没有实验器材,也不了了之。

在***上,大家都可以看到杨屹写的关于UCOSII在51上的移植,于是掀起了51上的RTOS的热潮。

再后来,陈明计先生推出的small rots,展示了一个用在51上的微内核,足以在52上进行任务调度。

前段时间,在ouravr上面开有专门关于A VR的Rtos的专栏,并且不少的兄弟把自己的作品拿出来,着实开了不少眼界。这时,我重新回顾了使用单片机的经历,觉得很有必要,从根本上对单片机的RTOS的知识进行整理,于是,我开始了编写一个用在A VR单片机的RTOS。

当时,我所有的知识和资源有:

Proteus6.7 可以用来模拟仿真avr系列的单片机

WinA VR v2.0.5.48 基于GCC A VR的编译环境,好处在于可以在C语言中插入asm的语句

mega8 1K的ram有8K的rom,是开发8位的RTOS的一个理想的器件,并且我对它也比较熟悉。

写UCOS的Jean https://www.doczj.com/doc/ad4558464.html,brosse在他的书上有这样一句话,“渐渐地,我自然会想到,写个实时内核直有那么难吗?不就是不断地保存,恢复CPU的那些寄存器嘛。”

好了,当这一切准备好后,我们就可以开始我们的Rtos for mega8的实验之旅了。

本文列出的例子,全部完整可用。只需要一个文件就可以编译了。我相信,只要适当可用,最简单的就是最好的,这样可以排除一些不必要的干扰,让大家专注到每一个过程的学习。

第一篇:函数的运行

第一篇:函数的运行

在一般的单片机系统中,是以前后台的方式(大循环+中断)来处理数据和作出反应的。

例子如下:

makefile的设定:运行WinAvr中的Mfile,设定如下

MCU Type: mega8

Optimization level: s

Debug format :A VR-COFF

C/C++ source file: 选译要编译的C文件

#include

void fun1(void)

{

unsigned char i=0;

while(1)

{

PORTB=i++;

PORTC=0x01<<(i%8);

}

}

int main(void)

{

fun1();

}

首先,提出一个问题:如果要调用一个函数,真是只能以上面的方式进行吗?

相信学习过C语言的各位会回答,No!我们还有一种方式,就是“用函数指针变量调用函数”,如果大家都和我一样,当初的教科书是谭浩强先生的《C程序设计》的话,请找回书的第9.5节。

例子:用函数指针变量调用函数

#include

void fun1(void)

{

unsigned char i=0;

while(1)

{

PORTB=i++;

PORTC=0x01<<(i%8);

}

}

void (*pfun)(); //指向函数的指针

int main(void)

{

pfun=fun1; //

(*pfun)(); //运行指针所指向的函数

}

第二种,是“把指向函数的指针变量作函数参数”

#include

void fun1(void)

{

unsigned char i=0;

while(1)

{

PORTB=i++;

PORTC=0x01<<(i%8);

}

}

void RunFun(void (*pfun)()) //获得了要传递的函数的地址

{

(*pfun)(); //在RunFun中,运行指针所指向的函数

}

int main(void)

{

RunFun(fun1); //将函数的指针作为变量传递

}

看到上面的两种方式,很多人可能会说,“这的确不错”,但是这样与我们想要的RTOS,有什么关系呢?各位请细心向下看。

以下是GCC对上面的代码的编译的情况:

对main()中的RunFun(fun1); 的编译如下

ldi r24,lo8(pm(fun1))

ldi r25,hi8(pm(fun1))

rcall RunFun

对void RunFun(void (*pfun)())的编译如下

/*void RunFun(void (*pfun)())*/

/*(*pfun)();*/

.LM6:

movw r30,r24

icall

ret

在调用void RunFun(void (*pfun)())的时候,的确可以把fun1的地址通过r24和r25传递给RunFun()。但是,RTOS如何才能有效地利用函数的地址呢?

__________________________

There's something good in this world. And it's worth fighting for ……

2006-01-17,11:31:26 资料邮件回复引用回复↑↑ ↓↓ 编辑删除

【1楼】armok 阿莫

积分:53517

派别:

等级:------

来自:https://www.doczj.com/doc/ad4558464.html, 站长

第二篇:人工堆栈

在单片机的指令集中,一类指令是专门与堆栈和PC指针打道的,它们是

rcall 相对调用子程序指令

icall 间接调用子程序指令

ret 子程序返回指令

reti 中断返回指令

对于ret和reti,它们都可以将堆栈栈顶的两个字节被弹出来送入程序计数器PC中,一般用来从子程序或中断中退出。其中reti还可以在退出中断时,重开全局中断使能。

有了这个基础,就可以建立我们的人工堆栈了。

例:

#include

void fun1(void)

{

unsigned char i=0;

while(1)

{

PORTB=i++;

PORTC=0x01<<(i%8);

}

}

unsigned char Stack[100]; //建立一个100字节的人工堆栈

void RunFunInNewStack(void (*pfun)(),unsigned char *pStack)

{

*pStack--=(unsigned int)pfun>>8; //将函数的地址高位压入堆栈,

*pStack--=(unsigned int)pfun; //将函数的地址低位压入堆栈,

SP=pStack; //将堆栈指针指向人工堆栈的栈顶

__asm__ __volatile__("RET

\t"); //返回并开中断,开始运行fun1()

}

int main(void)

{

RunFunInNewStack(fun1,&Stack[99]);

}

RunFunInNewStack(),将指向函数的指针的值保存到一个unsigned char的数组Stack 中,作为人工堆栈。并且将栈顶的数值传递组堆栈指针SP,因此当用"ret"返回时,从SP中恢复到PC中的值,就变为了指向fun1()的地址,开始运行fun1().

上面例子中在RunFunInNewStack()的最后一句嵌入了汇编代码"ret",实际上是可以去除的。因为在RunFunInNewStack()返回时,编译器已经会加上"ret"。我特意写出来,是为了让大家看到用"ret"作为返回后运行fun1()的过程。

第三篇:GCC中对寄存器的分配与使用

在很多用于A VR的RTOS中,都会有任务调度时,插入以下的语句:

入栈:

__asm__ __volatile__("PUSH R0

\t");

__asm__ __volatile__("PUSH R1

\t");

......

__asm__ __volatile__("PUSH R31

\t");

出栈

__asm__ __volatile__("POP R31

\t");

......

__asm__ __volatile__("POP R1

\t");

__asm__ __volatile__("POP R0

\t");

通常大家都会认为,在任务调度开始时,当然要将所有的通用寄存器都保存,并且还应该保存程序状态寄存器SREG。然后再根据相反的次序,将新任务的寄存器的内容恢复。

但是,事实真的是这样吗?如果大家看过陈明计先生写的small rots51,就会发现,它所保存的通用寄存器不过是4组通用寄存器中的1组。

在Win A VR中的帮助文件avr-libc Manual中的Related Pages中的Frequently Asked Questions,其实有一个问题是"What registers are used by the C compiler?" 回答了编译器所需要占用的寄存器。一般情况下,编译器会先用到以下寄存器

1 Call-used registers (r18-r27, r30-r31): 调用函数时作为参数传递,也就是用得最多的寄存器。

2 Call-saved registers (r2-r17, r28-r29): 调用函数时作为结果传递,当中的r28和r29可能会被作为指向堆栈上的变量的指针。

3 Fixed registers (r0, r1):固定作用。r0用于存放临时数据,r1用于存放0。

还有另一个问题是"How to permanently bind a variable to a register?",是将变量绑定到通用寄存器的方法。而且我发现,如果将某个寄存器定义为变量,编译器就会不将该寄存器分配作其它用途。这对RTOS是很重要的。

在"Inline Asm"中的"C Names Used in Assembler Code"明确表示,如果将太多的通用寄存器定义为变量,刚在编译的过程中,被定义的变量依然可能被编译器占用。

大家可以比较以下两个例子,看看编译器产生的代码:(在*.lst文件中)

第一个例子:没有定义通用寄存器为变量

#include

unsigned char add(unsigned char b,unsigned char c,unsigned char d)

{

return b+c*d;

}

int main(void)

{

unsigned char a=0;

while(1)

{

a++;

PORTB=add(a,a,a);

}

}

在本例中,"add(a,a,a);"被编译如下:

mov r20,r28

mov r22,r28

mov r24,r28

rcall add

第二个例子:定义通用寄存器为变量

#include

unsigned char add(unsigned char b,unsigned char c,unsigned char d) {

return b+c*d;

}

register unsigned char a asm("r20"); //将r20定义为变量a

int main(void)

{

while(1)

{

a++;

PORTB=add(a,a,a);

}

}

在本例中,"add(a,a,a);"被编译如下:

mov r22,r20

mov r24,r20

rcall add

当然,在上面两个例子中,有部份代码被编译器优化了。

通过反复测试,发现编译器一般使用如下寄存器:

第1类寄存器,第2类寄存器的r28,r29,第3类寄存器

如在中断函数中有调用基它函数,刚会在进入中断后,固定地将第1类寄存器和第3类寄存器入栈,在退出中断又将它们出栈。

__________________________

There's something good in this world. And it's worth fighting for ……

2006-01-17,11:33:05 资料邮件回复引用回复↑↑ ↓↓ 编辑删除

【2楼】armok 阿莫

积分:53517

派别:

等级:------

来自:https://www.doczj.com/doc/ad4558464.html, 站长

第四篇:只有延时服务的协作式的内核

Cooperative Multitasking

前后台系统,协作式内核系统,与占先式内核系统,有什么不同呢?

记得在***上看过这样的比喻,“你(小工)在用厕所,经理在外面排第一,老板在外面排第二。如果是前后台,不管是谁,都必须按排队的次序使用厕所;如果是协作式,那么可以等你用完厕所,老板就要比经理先进入;如果是占先式,只要有更高级的人在外面等,那么厕所里无论是谁,都要第一时间让出来,让最高级别的人先用。”

#include

#include

#include

unsigned char Stack[200];

register unsigned char OSRdyTbl asm("r2"); //任务运行就绪表

register unsigned char OSTaskRunningPrio asm("r3"); //正在运行的任务

#define OS_TASKS 3 //设定运行任务的数量

struct TaskCtrBlock //任务控制块

{

unsigned int OSTaskStackTop; //保存任务的堆栈顶

unsigned int OSWaitTick; //任务延时时钟

} TCB[OS_TASKS+1];

//防止被编译器占用

register unsigned char tempR4 asm("r4");

register unsigned char tempR5 asm("r5");

register unsigned char tempR6 asm("r6");

register unsigned char tempR7 asm("r7");

register unsigned char tempR8 asm("r8");

register unsigned char tempR9 asm("r9");

register unsigned char tempR10 asm("r10");

register unsigned char tempR11 asm("r11");

register unsigned char tempR12 asm("r12");

register unsigned char tempR13 asm("r13");

register unsigned char tempR14 asm("r14");

register unsigned char tempR15 asm("r15");

register unsigned char tempR16 asm("r16");

register unsigned char tempR16 asm("r17");

//建立任务

void OSTaskCreate(void (*Task)(void),unsigned char *Stack,unsigned char TaskID)

{

unsigned char i;

*Stack--=(unsigned int)Task>>8; //将任务的地址高位压入堆栈,

*Stack--=(unsigned int)Task; //将任务的地址低位压入堆栈,

*Stack--=0x00; //R1 __zero_reg__

*Stack--=0x00; //R0 __tmp_reg__

*Stack--=0x80; //SREG 在任务中,开启全局中断

for(i=0;i<14;i++) //在avr-libc 中的FAQ中的What registers are used by the C compiler?

*Stack--=i; //描述了寄存器的作用

TCB[TaskID].OSTaskStackTop=(unsigned int)Stack; //将人工堆栈的栈顶,保存到堆栈的数组中

OSRdyTbl|=0x01<

}

//开始任务调度,从最低优先级的任务的开始

void OSStartTask()

{

OSTaskRunningPrio=OS_TASKS;

SP=TCB[OS_TASKS].OSTaskStackTop+17;

__asm__ __volatile__( "reti" "

\t" );

}

//进行任务调度

void OSSched(void)

{

// 根据中断时保存寄存器的次序入栈,模拟一次中断后,入栈的情况

__asm__ __volatile__("PUSH __zero_reg__

\t"); //R1

__asm__ __volatile__("PUSH __tmp_reg__

\t"); //R0

__asm__ __volatile__("IN __tmp_reg__,__SREG__

\t"); //保存状态寄存器SREG

__asm__ __volatile__("PUSH __tmp_reg__

\t");

__asm__ __volatile__("CLR __zero_reg__

\t"); //R0重新清零

__asm__ __volatile__("PUSH R18

\t");

__asm__ __volatile__("PUSH R19

\t");

__asm__ __volatile__("PUSH R20

\t");

__asm__ __volatile__("PUSH R21

\t");

__asm__ __volatile__("PUSH R22

\t");

__asm__ __volatile__("PUSH R23

\t");

__asm__ __volatile__("PUSH R24

\t");

__asm__ __volatile__("PUSH R25

\t");

__asm__ __volatile__("PUSH R26

\t");

__asm__ __volatile__("PUSH R27

\t");

__asm__ __volatile__("PUSH R30

\t");

__asm__ __volatile__("PUSH R31

\t");

__asm__ __volatile__("PUSH R28

\t"); //R28与R29用于建立在堆栈上的指针

__asm__ __volatile__("PUSH R29

\t"); //入栈完成

TCB[OSTaskRunningPrio].OSTaskStackTop=SP; //将正在运行的任务的堆栈底保存

unsigned char OSNextTaskID; //在现有堆栈上开设新的空间

for (OSNextTaskID = 0; //进行任务调度

OSNextTaskID < OS_TASKS && !(OSRdyTbl & (0x01<

OSNextTaskID++);

OSTaskRunningPrio = OSNextTaskID ;

cli(); //保护堆栈转换

SP=TCB[OSTaskRunningPrio].OSTaskStackTop;

sei();

//根据中断时的出栈次序

__asm__ __volatile__("POP R29

\t");

__asm__ __volatile__("POP R28

\t");

__asm__ __volatile__("POP R31

\t");

__asm__ __volatile__("POP R30

\t");

__asm__ __volatile__("POP R27

\t");

__asm__ __volatile__("POP R26

\t");

__asm__ __volatile__("POP R25

\t");

__asm__ __volatile__("POP R24

\t");

__asm__ __volatile__("POP R23

\t");

__asm__ __volatile__("POP R22

\t");

__asm__ __volatile__("POP R21

\t");

__asm__ __volatile__("POP R20

\t");

__asm__ __volatile__("POP R19

\t");

__asm__ __volatile__("POP R18

\t");

__asm__ __volatile__("POP __tmp_reg__

\t"); //SERG 出栈并恢复

__asm__ __volatile__("OUT __SREG__,__tmp_reg__

\t"); //

__asm__ __volatile__("POP __tmp_reg__

\t"); //R0 出栈

__asm__ __volatile__("POP __zero_reg__

\t"); //R1 出栈

//中断时出栈完成

}

void OSTimeDly(unsigned int ticks)

{

if(ticks) //当延时有效

{

OSRdyTbl &= ~(0x01<

TCB[OSTaskRunningPrio].OSWaitTick=ticks;

OSSched(); //从新调度

}

}

void TCN0Init(void) // 计时器0

{

TCCR0 = 0;

TCCR0 |= (1<

TIMSK |= (1<

TCNT0 = 100; // 置计数起始值

}

SIGNAL(SIG_OVERFLOW0)

{

unsigned char i;

for(i=0;i

{

if(TCB[i].OSWaitTick)

{

TCB[i].OSWaitTick--;

if(TCB[i].OSWaitTick==0) //当任务时钟到时,必须是由定时器减时的才行{

OSRdyTbl |= (0x01<

}

}

}

TCNT0=100;

}

void Task0()

{

unsigned int j=0;

while(1)

{

PORTB=j++;

OSTimeDly(2);

}

}

void Task1()

{

unsigned int j=0;

while(1)

{

PORTC=j++;

OSTimeDly(4);

}

}

void Task2()

{

unsigned int j=0;

while(1)

{

PORTD=j++;

OSTimeDly(8);

}

}

void TaskScheduler()

{

while(1)

{

OSSched(); //反复进行调度}

}

int main(void)

{

TCN0Init();

OSRdyTbl=0;

OSTaskRunningPrio=0;

OSTaskCreate(Task0,&Stack[49],0);

OSTaskCreate(Task1,&Stack[99],1);

OSTaskCreate(Task2,&Stack[149],2);

OSTaskCreate(TaskScheduler,&Stack[199],OS_TASKS);

OSStartTask();

}

在上面的例子中,一切变得很简单,三个正在运行的主任务,都通过延时服务,主动放弃对CPU的控制权。

在时间中断中,对各个任务的的延时进行计时,如果某个任务的延时结束,将任务重新在就绪表中置位。

最低级的系统任务TaskScheduler(),在三个主任务在放弃对CPU的控制权后开始不断地进行调度。如果某个任务在就绪表中置位,通过调度,进入最高级别的任务中继续运行。

__________________________

There's something good in this world. And it's worth fighting for ……

2006-01-17,11:33:38 资料邮件回复引用回复↑↑ ↓↓ 编辑删除

【3楼】armok 阿莫

积分:53517

派别:

等级:------

来自:https://www.doczj.com/doc/ad4558464.html, 站长

第五篇:完善的协作式的内核

现在为上面的协作式内核添加一些OS中所必须的服务:

1 挂起和重新运行任务

2 信号量(在必要时候,可以扩展成邮箱和信息队列)

3 延时

#include

#include

#include

unsigned char Stack[400];

register unsigned char OSRdyTbl asm("r2"); //任务运行就绪表

register unsigned char OSTaskRunningPrio asm("r3"); //正在运行的任务

#define OS_TASKS 3 //设定运行任务的数量

struct TaskCtrBlock

{

unsigned int OSTaskStackTop; //保存任务的堆栈顶

unsigned int OSWaitTick; //任务延时时钟

} TCB[OS_TASKS+1];

//防止被编译器占用

register unsigned char tempR4 asm("r4");

register unsigned char tempR5 asm("r5");

register unsigned char tempR6 asm("r6");

register unsigned char tempR7 asm("r7");

register unsigned char tempR8 asm("r8");

register unsigned char tempR9 asm("r9");

register unsigned char tempR10 asm("r10");

register unsigned char tempR11 asm("r11");

register unsigned char tempR12 asm("r12");

register unsigned char tempR13 asm("r13");

register unsigned char tempR14 asm("r14");

register unsigned char tempR15 asm("r15");

register unsigned char tempR16 asm("r16");

register unsigned char tempR16 asm("r17");

//建立任务

void OSTaskCreate(void (*Task)(void),unsigned char *Stack,unsigned char TaskID)

{

unsigned char i;

*Stack--=(unsigned int)Task>>8; //将任务的地址高位压入堆栈,

*Stack--=(unsigned int)Task; //将任务的地址低位压入堆栈,

*Stack--=0x00; //R1 __zero_reg__

*Stack--=0x00; //R0 __tmp_reg__

*Stack--=0x80;

//SREG 在任务中,开启全局中断

for(i=0;i<14;i++) //在avr-libc 中的FAQ中的What registers are used by the C compiler?

*Stack--=i; //描述了寄存器的作用

TCB[TaskID].OSTaskStackTop=(unsigned int)Stack; //将人工堆栈的栈顶,保存到堆栈的数组中

OSRdyTbl|=0x01<

}

//开始任务调度,从最低优先级的任务的开始

void OSStartTask()

{

OSTaskRunningPrio=OS_TASKS;

SP=TCB[OS_TASKS].OSTaskStackTop+17;

__asm__ __volatile__( "reti" "

\t" );

}

//进行任务调度

void OSSched(void)

{

// 根据中断时保存寄存器的次序入栈,模拟一次中断后,入栈的情况

__asm__ __volatile__("PUSH __zero_reg__

\t"); //R1

__asm__ __volatile__("PUSH __tmp_reg__

\t"); //R0

__asm__ __volatile__("IN __tmp_reg__,__SREG__

\t"); //保存状态寄存器SREG

__asm__ __volatile__("PUSH __tmp_reg__

\t");

__asm__ __volatile__("CLR __zero_reg__

\t"); //R0重新清零

__asm__ __volatile__("PUSH R18

\t");

__asm__ __volatile__("PUSH R19

\t");

__asm__ __volatile__("PUSH R20

\t");

__asm__ __volatile__("PUSH R21

\t");

__asm__ __volatile__("PUSH R22

\t");

__asm__ __volatile__("PUSH R23

\t");

__asm__ __volatile__("PUSH R24

\t");

__asm__ __volatile__("PUSH R25

\t");

__asm__ __volatile__("PUSH R26

\t");

__asm__ __volatile__("PUSH R27

\t");

__asm__ __volatile__("PUSH R30

\t");

__asm__ __volatile__("PUSH R31

\t");

__asm__ __volatile__("PUSH R28

\t"); //R28与R29用于建立在堆栈上的指针

__asm__ __volatile__("PUSH R29

\t"); //入栈完成

TCB[OSTaskRunningPrio].OSTaskStackTop=SP; //将正在运行的任务的堆栈底保存

unsigned char OSNextTaskID; //在现有堆栈上开设新的空间

for (OSNextTaskID = 0; //进行任务调度

OSNextTaskID < OS_TASKS && !(OSRdyTbl & (0x01<

OSNextTaskID++);

OSTaskRunningPrio = OSNextTaskID ;

cli(); //保护堆栈转换

SP=TCB[OSTaskRunningPrio].OSTaskStackTop;

sei();

//根据中断时的出栈次序

__asm__ __volatile__("POP R29

\t");

__asm__ __volatile__("POP R28

\t");

__asm__ __volatile__("POP R31

\t");

__asm__ __volatile__("POP R30

\t");

__asm__ __volatile__("POP R27

\t");

__asm__ __volatile__("POP R26

\t");

__asm__ __volatile__("POP R25

\t");

__asm__ __volatile__("POP R24

\t");

__asm__ __volatile__("POP R23

\t");

__asm__ __volatile__("POP R22

\t");

__asm__ __volatile__("POP R21

\t");

__asm__ __volatile__("POP R20

\t");

__asm__ __volatile__("POP R19

\t");

__asm__ __volatile__("POP R18

\t");

__asm__ __volatile__("POP __tmp_reg__

\t"); //SERG 出栈并恢复

__asm__ __volatile__("OUT __SREG__,__tmp_reg__

\t"); //

__asm__ __volatile__("POP __tmp_reg__

\t"); //R0 出栈

__asm__ __volatile__("POP __zero_reg__

\t"); //R1 出栈

//中断时出栈完成

}

////////////////////////////////////////////任务处理

//挂起任务

void OSTaskSuspend(unsigned char prio)

{

TCB[prio].OSWaitTick=0;

OSRdyTbl &= ~(0x01<

if(OSTaskRunningPrio==prio) //当要挂起的任务为当前任务

OSSched(); //从新调度

}

//恢复任务可以让被OSTaskSuspend或OSTimeDly暂停的任务恢复

void OSTaskResume(unsigned char prio)

{

OSRdyTbl |= 0x01<

TCB[prio].OSWaitTick=0; //将时间计时设为0,到时

if(OSTaskRunningPrio>prio) //当要当前任务的优先级低于重置位的任务的优先级OSSched(); //从新调度//从新调度

}

// 任务延时

void OSTimeDly(unsigned int ticks)

{

if(ticks) //当延时有效

{

OSRdyTbl &= ~(0x01<

TCB[OSTaskRunningPrio].OSWaitTick=ticks;

OSSched(); //从新调度

}

}

//信号量

struct SemBlk

{

unsigned char OSEventType; //型号0,信号量独占型;1信号量共享型unsigned char OSEventState; //状态0,不可用;1,可用

unsigned char OSTaskPendTbl; //等待信号量的任务列表

} Sem[10];

//初始化信号量

void OSSemCreat(unsigned char Index,unsigned char Type)

{

Sem[Index].OSEventType=Type; //型号0,信号量独占型;1信号量共享型

Sem[Index].OSTaskPendTbl=0;

Sem[Index].OSEventState=0;

}

//任务等待信号量,挂起

unsigned char OSTaskSemPend(unsigned char Index,unsigned int Timeout)

{

//unsigned char i=0;

if(Sem[Index].OSEventState) //信号量有效

{

if(Sem[Index].OSEventType==0) //如果为独占型

Sem[Index].OSEventState = 0x00; //信号量被独占,不可用

}

else

{ //加入信号的任务等待表

Sem[Index].OSTaskPendTbl |= 0x01<

OSRdyTbl &= ~(0x01<

TCB[OSTaskRunningPrio].OSWaitTick=Timeout; //如延时为0,刚无限等待OSSched(); //从新调度

if(TCB[OSTaskRunningPrio].OSWaitTick==0) return 0;

}

return 1;

}

//发送一个信号量,可以从任务或中断发送

void OSSemPost(unsigned char Index)

{

if(Sem[Index].OSEventType) //当要求的信号量是共享型

{

Sem[Index].OSEventState=0x01; //使信号量有效

OSRdyTbl |=Sem [Index].OSTaskPendTbl; //使在等待该信号的所有任务就绪Sem[Index].OSTaskPendTbl=0; //清空所有等待该信号的等待任务}

else //当要求的信号量为独占型

{

unsigned char i;

for (i = 0; i < OS_TASKS && !(Sem[Index].OSTaskPendTbl & (0x01<

if(i < OS_TASKS) //如果有任务需要

{

Sem[Index].OSTaskPendTbl &= ~(0x01<

OSRdyTbl |= 0x01<

}

else

{

Sem[Index].OSEventState =1; //使信号量有效

}

}

}

//从任务发送一个信号量,并进行调度

void OSTaskSemPost(unsigned char Index)

{

OSSemPost(Index);

OSSched();

}

//清除一个信号量,只对共享型的有用。

//对于独占型的信号量,在任务占用后,就交得不可以用了。

void OSSemClean(unsigned char Index)

{

成功励志名言名句长句_关于成功的励志名言句子

成功励志名言名句长句_关于成功的励志 名言句子 真正成功的人生,在于你是否努力地去实现自我,走出属于自己的道路。以下是为你整理的成功励志名言名句长句,欢迎大家阅读。 成功励志名言名句长句【经典篇】1. 没有伞的孩子,必须努力奔跑! 2. 真正成功的人生,不在于成就的大小,而在于你是否努力地去实现自我,喊出自己的声音,走出属于自己的道路。 3. 生活不是林黛玉,不会因为忧伤而风情万种。 4. 能认识到自己的生活挫折特别多,并且希望快点过去,你一定会想办法战胜挫折的,挫折并不可怕,可怕地是丧失战胜挫折的勇气,可怕地是丧失生活的希望。只要希望在,勇气在,困难一定可以战胜的。 5. 人生不如意的事十之八九,如果天天念叨这些事情,那就无法生活下去了。还是要向前看,看光明。喜欢你的结论:何不放下得失计较,善待别人,善待自己。 6. 成与败的问题,其核心是怎样才能成功。只要目的,而没有目标。不计方式,不计后果的成功,最后会发现,却只是在“做功”。 7. 超前半步是先驱,超前一步是先烈;落后半步是迂腐,落后一步是顽固。紧跟时代不落伍,超前落后小半步;不前不后最适当,最

世俗者最舒畅。朋友,希望您掌握半步之差。 8. 在别人肆意说你的时候,问问自己,到底怕不怕,输不输的起。不必害怕,不要后退,不须犹豫,难过的时候就一个人去看看这世界。多问问自己,你是不是已经为了梦想而竭尽全力了? 9. 命运,是一个很飘渺的东西,有人相信命运,走到了塔顶,或者坠落到崖底。有人想逆天改命,但成功的几率,与中六合彩一样,但有了毅力,终有那么一天,前方,不再是灰色的雾。 10. 进步和成长的过程总是有许多的困难与坎坷的。有时我们是由于志向不明,没有明确的目的而碌碌无为。但是还有另外一种情况,是由于我们自己的退缩,与自己“亲密”的妥协没有坚持到底的意志,才使得机会逝去,颗粒无收。 成功励志名言名句长句【热门篇】1. 岁月在滴答的时针里渐渐推移,我们在纯白的画纸中央,涂上我们渴望的色彩与图案。我画上了彩虹,我发现这七色的水彩画,不仅仅美丽了我的画,更绚烂了我的人生。 2. 人心复杂,总留给我们太多悬念;心悸蔓延,遗落下许多尘埃。恍惚的遇见,一不小心绕成了心底永久的记忆,点燃心灯,温暖曾经怀想过的梦,照亮未来明净的脚步。 3. 生活,其实是块七色板,有着追梦的艰辛,有着成功的喜欲,有着失败的痛苦,有着我们应该微笑,去唱那生活的歌瑶。 4. 岁月不能停下脚步,时光没有回转的理由,我在秋去冬来的季节里,再次感悟自己的人生。那些深深浅浅的脚印里,我看到了自

品牌文化打造浅谈

品牌文化打造浅谈 品牌的背后是文化,我们发现但凡成功的品牌都有属于自己的品牌文化能够在消费者及同行业内得到认可。那你知道品牌文化打造有何讲究?有有何来源吗? 品牌文化的源来 品牌定位决定了品牌文化,就像盖楼房一样,你先知道你要盖什么样的楼能够满足你的需求。这个;什么样的楼就是你的定位。为了确定你盖的楼能够满足你的需求,你要结合市场和自己的能力(市场分析,自我分析)来完成这个定位。定位一般分三个基础方向——基础的产品定位,受众定位,调性定位这几个定位决定内在文化是怎么样的。 品牌文化如何打造 品牌文化的塑造就好比是谈恋爱的时候,你希望尽量多地展示自己优秀的一面,尽量吸引对方的注意好好感。首先你要选好对象,在你选择跟他(她)见面之前你就要通过各种渠道多方打探,以了解这个人的身高、相貌、人品、个性、收入等等方面,这就是对比和选择。当你看到琳琅满目的洗发水品牌,你会选择谁?你肯定要根据你以前所接受到的这些品牌给你的不同感受来进行挑选,比如你准备挑选一款能够去头皮屑的,就有多种选择,不同品牌,不同价位,有海飞丝、沙宣、采乐等等,那你为什么要选择这个品牌?功能都差不多,价格也都相差不大,关键的就在于这个品牌给你的一种感觉,有时候你很难说出为什么要选择这个牌子,但是这个品牌已经对你进行了潜移默化的影响,这个品牌所体现的个性、品味非常符合你的情感和感觉,于是,你们产生了好感,你选择了这个品牌,开始了交往。当你使用了这个牌子一段时间,如果功能不好,你会失望,拒绝跟他继续交往,如果满足你的预期,那你们就陷入;热恋了,这就逐渐形成了品牌的忠诚度。 品牌文化打造的价值 1.要注重塑造企业核心价值观; 2.要重点打造以主业为核心的品牌; 3要充分体现以人为本的理念; 4.要强化企业文化建设中的责任; 5.加强企业和员工的融合,增强企业发展壮大的强大动力。

练习题创造自己的梦田.doc

创造自己的梦田 5/18认识小秋,印象很深刻,小秋以前待过剧团,整个人就是很亮眼的那种类型,但是没想到她活泼的外表下,却有着一颗细腻思考的心。5/31她发表在ITM的一篇文章《TO BE & TO DO & GTD》,里面有一句话让我印象深刻,“To be的曲线,是以实践梦想为方向,经由一连串的行动走出来的轨迹。” 我常常在想,这张图就是我们的梦田,很多人都想把心中的田耕耘成梦田,虽然不容易,但是却是做得到的,我们幸福行动家线上课程的第二阶段“”,这就开始。 (1)四个角色 图中有四个角色,穷忙族、梦想家、行动家及幸福家。 穷忙族就是为时间管理所苦的人们,常常自认为是Victim环境下的受害者,每天忙、盲、茫,却不知道该往哪去,事实上却是穷忙,脱离不了自己原有的舒适圈。 梦想家及行动家,这两种角色愿意脱离自己的舒适圈,却是跌跌撞撞地前进。梦想家是Crazy maker,做事凭着热情及冲动向前冲,

常常冲刺到峰顶后因煞不住车而掉落山谷。行动家则是Micro Manager,过度注重细节,见树不见林,执行力强,做事的品质很高,却无法向着梦想持续前进。 幸福家是Master & Commander,他们能够掌控自己的人生,能够运用各种资源,稳健的朝自己的目标前进,不仅如此,他走的路是在自己的to be上,也就是愿景和使命结合为一体的路上,因为有愿景,所以走起来充满热情,因为是使命,所以走起来轻松愉快,前进迅速。 大家都想成为梦想家,这就需要行动和梦想的结合,也就是执行力和愿景力。 (2)执行力与愿景力 在上图的时间管理矩阵中,我们把执行力当作水平轴,愿景力当成是垂直轴。 水平式的行动管理(执行力),我们可以把脑部活动想像成常常扫瞄周遭环境的警用雷达,她可能会发现上千项值得注意的大小事情。我们需要一个优秀的系统来追踪这些事情,针对个人的需要,提供必要的资讯。

2020年高考作文指导:议论文例后分析方法指津【刘希国】

2020年高考作文指导:议论文例后分析方法指津 例证法是议论文写作常用的论证方法。要想使议论文论证严谨有力,就必须对论据进行分析。有些同学写的议论文,尽管论点正确、鲜明,论据也典型、可靠,但是由于在举例之后没有进一步挖掘事例包含的事理,缺乏必要的分析,导致论点和论据联系松散,给人以罗列论据之感。所以,举例之后的分析是少不得的。下面介绍几种常用的分析论据的方法。 一、揭示实质法 这种方法,就是在列举出属性相同或相关的几个事例之后,对其进行归纳升华,点明论据所包含的道理,揭示出论据与论点之间的逻辑联系,从而深化论点。如:史学家司马光写《资治通鉴》花了19 年,相声艺术宗师侯宝林为学谐语手抄一部十多万字的《谐浪》,俄国大作家托尔斯泰写《战争与和平》花了27 年,德国著名医生欧立希连续试验 914 次,终于研制成治疗人体内锤虫和抗螺旋体病菌的新药——新胂凡纳明。这些事例充分证明了古今中外无数有成就的人之所以取得事业的成功,秘诀在于他们有恒心和毅力。(考场优秀作文《恒心和毅力是成功之本》) 这段文字中,作者在列举古今中外成功者的四个事例之后,点明了其中包含的道理,从而使中心论点“恒心和毅力是成功之本”得到了有力的论证,论据与论点联系紧密。 二、正反对比法 这种方法,所举事例形成正反对照,然后加以分析,论证观点。如:黑格尔曾经自夸德国人天生就是哲学家。然而,就是这样一个天生严谨自律的民族,却在一个狂人的引诱下,陷入了战争的渊薮。人们难以忘记60年前的那幕惨剧:生灵涂炭、妻离子散、血流成河……生者在对往事的审视中找到道德的标杆,也找到了纪念的理由。德国人用尽一切方法阻止时间淡褪那血色、稀薄那呼声——修建集中营纪念馆,全力处理战后的善后问题,还有那德国总理在犹太人纪念碑前的惊世一跪!德国人在 60 年里不断地反思,不停地纪念,终于完成了灵魂的自我救赎。德意志民族向世界展示了理性的力量,也赢得了世人的尊敬!但纪念一旦脱离理性的制约,它就会变成不可控制的魔鬼。日本在60年前那幕惨剧中同样扮演了不光彩的角色,作为亚洲地区的主要刽子手,日本犯下的罪行罄竹难书。往者已矣,大和民族的纪念却是如此这般:右翼势力大肆鼓吹“中国威胁论”,还妄图为二战罪行翻案;不顾史实修订历史教科书,文过饰非,美化侵略罪行;更有首相一年一度的靖国神社“拜鬼”……日本这种偏离理性范畴的

打造企业文化品牌之我见

打造企业文化品牌之我见文/姜盘勤 企业之间的竞争越来越表现为文化的竞争,企业文化对企业生存与发展起着决定作用,关乎企业兴衰。因此,创新企业文化,打造企业文化品牌,是提升企业核心竞争力,构建和谐企业的长效之举。 建立“全员”机制营造“创牌”氛围 企业文化建设是一项系统工作,要富有成效的抓好企业文化建设,必须积极营造领导重视、全员参与、氛围浓厚的文化环境,这是打造企业文化品牌的先决条件。首先,领导要“实步到位”。企业领导是企业文化建设的推行者和执行者,不能“走着看”、“慢慢来”,甚至走虚步。要从企业发展的高度充分认识加强企业文化建设的重要性和必要性,将此项工作列入企业发展的重要议事日程,从战略高度抓实抓牢。在运作上,要确立好符合企业特点的文化建设方案,结合各自实际,建立健全管理机制,制定出切实可行的实施举措。在工作中,要坚持做到“四同步”,即:企业文化建设与企业发展规划同步,与项目管理规划同步,与企业管理工作检查同步,与企业其它工作落实同步,确保企业文化建设顺利进行。 其次,注重“灵魂渗透”。企业文化建设离不开广大员工的参与和支持,要使他们形成共识必须加大宣传教育力度。因此,要采取集中学习、专题培训、编印文化宣传手册、制作板报和图片、在醒目的地方张贴和悬挂企业文化建设宣传标语、举办知识竞赛等员工喜闻乐见的形式,大力宣传和推行统一的企业标识、企业精神、企业价值观,牢记企业目标、管理方针,谱写出各自的企业之歌并让职工用

心唱好,真正将企业文化理念融入到职工的思想意识之中,铭刻在职工的心灵深处。 第三,狠抓落实工作。企业文化建设方案在实施过程中,要派专人加强指导,发现问题及时纠正,确保实施方案落实不走样,使企业文化建设真正得到不断加强、不断提高。尤其要建立健全一整套考评机制,对企业文化建设好的单位要大力宣扬,并给予奖励;对企业文化建设方案执行不力的单位,要规定整改期限,凡逾期不整改的,要对单位党政主管进行处罚,维护其严肃性。 培育价值观念弘扬企业精神 每个企业都有其价值观,它是企业文化的核心,是广大员工言行的指南,是企业生存发展的基本条件。要把培养全体员工积极向上的企业价值观作为一项长期而重要的工作来抓,教育职工充分认识自我价值的实现离不开企业、离不开社会,只有积极投身于为社会,为企业创造和奉献的火热生活,才能不断自我提高、自我发展,实现自己的人生价值追求。要引导职工正确处理好国家和企业、企业和个人、自我价值和社会及企业价值的关系,自觉地把个人理想、信念、价值观融入到企业价值观之中,融入到企业发展目标之中,将自我价值的实现与企业发展目标的实现结合起来,增强责任感和使命感,通过扎实工作,奋力拚搏,在实现社会价值、企业价值的过程中实现自我价值。同时,要大力弘扬企业精神。经过长期实践和提炼升华的企业精神,是企业之魂。正是靠这种精神,不少企业曾经创建了名垂史册的辉煌业绩。在市场竞争异常激烈的今天,要把企业做大做强,真正领先行业,在国际竞争中永远立于不败之地,更应大力弘扬企业精神。要采

建立一个目标卡

【教学目标】 1、让同学会明确自己的目标,建一个目标卡。 2、学会坚持。 3、培养学生的自我控制能力。 【教学重点、难点】 1、重点:建立一个目标卡。 2、难点:让学生们学会坚持。 【教材分析】 本课内容通过让学生们课堂讨论,建立一个属于自己的目标卡,每天坚持去做目标卡上的内容,一个星期后检收情况,对他们有一个督导作用。让他们学会坚持、培养他们的自控能力。 【教学准备】 多媒体网络教室,PPT课件中展示问题和精美的目标卡。 【教学过程】 一、谈话引入坚持的意义,导入新课 1、老师记得大家第一节课的时候给大家讲过千纸鹤的传说,大家都还记得吗?(答)那有同学可以把这个故事讲一遍吗? 2、老师曾经也叠过1000只千纸鹤用时三年,那同学们有没有坚持做过一件事情呢?(答) 3、那同学们有没有自己想做却觉得一直没有时间做的事情?(答) 4、如果,给大家一个时间和机会,你们最想做的事情是什么? 二、课堂讨论自己的长期目标和短期目标 三、制作目标卡 姓名、短期目标、长期目标 四、故事阶段 在西游记中,四海龙王分别是:东海敖广、西海敖钦、南海敖润、北海敖顺,称为四海龙王。传说东海龙王生了九个儿子,性格各异,各有所长。大儿子囚牛喜欢音乐,老二虫睚眦嗜好攻杀,老三嘲风喜欢探险,老四蒲牢喜爱鸣叫,老五狻猊好坐,老六霸下喜爱负重,老七狴犴喜好诉讼,老八赑屃好文,老九虫吻好吞。囚牛

囚牛:是龙生九子中的老大,它平生爱好音乐,因此常常蹲在琴头上欣赏弹拨弦拉的音乐,所以琴头上便刻上它的形象。这个形象一直沿用了下来,一些贵重的胡琴头部位,至今仍刻有龙头的形象,称其为"龙头胡琴"。 睚眦:是九子中老二,平生好斗喜杀,刀环、刀柄、龙吞口便是它的形象。这些武器装饰了龙的形象后,更增添了慑人的力量,它不仅装饰在那些沙场名将的兵器上,更大量地用在仪仗和宫殿守卫者武器上,从而更显得威严庄重,而成语“睚眦必报”说的就是这位大神。 嘲风:九子中的老三,形似兽,嘲风平生好险又好望,殿台角上的走兽是它的形象。嘲风不仅象征着吉祥、美观和威严,而且还具有威慑妖魔、清除灾祸的含义。 蒲牢,形似盘曲的龙,排行第四,平生好鸣好吼,洪钟上的龙形兽钮是它的形象。原来蒲牢居住在海边,虽为龙子,它却一向害怕庞然大物的鲸鱼,当鲸鱼一发起攻击,它就吓得大声吼叫。 狻猊,形似狮子,排行第五,平生喜静不喜动,好坐,又喜欢烟火,因此佛座上和香炉上的脚部装饰就是它的形象。 霸下,又名赑屃,形似龟,是老六,平生好负重,力大无穷,碑座下的龟趺是其形象。传说霸下在上古时代常驮着三山五岳,在江河湖海里兴风作浪。后来大禹治水时收服了它,为治水作出了贡献。洪水治服了,大禹又担心霸下又到处撒野,便搬来顶天立地的特大石碑,上面刻上霸下治水的功迹,叫霸下驮着,沉重的石碑压得它不能随便行走。 狴犴,又名宪章,形似虎,是老七。它平生好讼,却又有威力,狱门上部那虎头形的装饰便是其形象。传说狴犴不仅急公好义,仗义执言,而且能明辨是非,秉公而断,再加上它的形象威风凛凛, 所以,它出现在公堂之上。 负屃,似龙形,排行老八,平生好文,石碑两旁的文龙是其形象。我国碑碣的历史久远,内容丰富,千古称绝。而负屃十分爱好这种闪耀着艺术光彩的碑文,因此它甘愿化做图案文龙去衬托这些传世的文学珍品,把碑座装饰得更为典雅秀美。螭吻,又名鸱尾、鸱吻,龙形的吞脊兽,是老九,螭吻口阔噪粗,平生好吞,殿脊两端的卷尾龙头是其形象。螭吻属水性,所以,在中国古代建筑及民宅之中,常用它作镇邪之物以避火。

任何的收获不是巧合,而是每天的努力与坚持得来的

任何的收获不是巧合,而是每天的努力与坚持得来的 谁的幸运,都不是凭空而来,只有当你足够努力,你才会足够幸运。这世界不会辜负每一份努力和坚持。时光不会怠慢勇敢而执着的每一个人! 你要逼自己优秀,记住一个道理:只要自己变优秀了,其他的事情才会跟着好起来,别整天奢望会遇见什么对的人,不然就算遇见了也抓不住,你优秀了,自然有对的人与你并肩。 任何的收获不是巧合,而是每天的努力与坚持得来的。人生因有梦想,而充满动力。不怕你每天迈一小步,只怕你停滞不前;不怕你每天做一点事,只怕你无所事事。坚持,是生命的一种毅力!执行,是努力的一种坚持! 如果放弃太早,你永远都不知道自己会错过什么。活着不是靠泪水搏取同情,而是靠汗水获得掌声。自卑是剪了双翼的飞鸟,难上青天,这两者都是成才的大忌。 没有激流就称不上勇进,没有山峰则谈不上攀登。懦弱的人只会裹足不前,莽撞的人只能引为烧身,只有真正敢的人才能所向披靡。 真正成功的人生,不在于成就的大小,而在于你是否努力地去实现自我,喊出自己的声音,走出属于自己的道路。成功不是属于跑的最快的人,而是属于一直在跑的人。只有智者勇者及一直坚持目标的人才能成功! 一个人命运的改变,1%靠别人提醒,99%靠自己觉醒!改变你的思维,改变你的表达,改变你的世界!格局,决定你的结局!定位,决定你的地位!永远别看轻自己,因为不到最后你永远不知道自己多强大! 人生像一张洁白的纸,全凭人生之笔去描绘,玩弄纸笔者,白纸上只能涂成一滩胡乱的墨迹;认真书写者,白纸上才会留下一片优美的文章。 决定你过什么样生活,从来都不是你哪一次的选择,而是你一直以来的状态。拥有昂扬的斗志,永远积极乐观面对人生悲喜的状态,生活无论怎么选,都不会太差! 接受生活中不时出现的艰辛或是挫折,不必怨天尤人,也不需等待他人施以援手,挖掘自己的力量一步步跨过去,我们会离想要的东西越来越近,也会发现一个更好的自己。

教你叙例和析例

作文指导:教你如何叙例和析例 教学时间:2014年9月1日—4日 教学目标:通过课堂指导,规范学生议论文的写法,让学生懂得如何叙例如何析例。 教学重难点:让学生懂得叙例后如何议例。 教学方法:讲练结合。 教学时数:5课时 教学过程: 第一部分:写议论文如何叙例? 一、单个材料的使用要会合理压缩裁剪。 方法:1、舍弃与论点无关的内容; 2、变具体记叙为概括叙述 例如:事例一(近300字) 找准位置,实现自我 英国有一个普通的家庭,家中有个孩子,孩子上学时,父母对孩子的期望很高,但孩子好像对学习毫无兴趣。虽然为了父母孩子努力过,但成绩依然毫无起色。渐渐地,这个家很少再有欢声笑语,取而代之的是叹息和失望,终于,孩子因受不了家中压抑的气氛而离家出走,在外谋生时,他发现自己对雕刻似乎很有天赋。一天,他听说政府要为一位伟人雕刻一座雕像,很多雕刻匠都希望得到这个工作。在众多竞争者中,孩子技压群芳,赢得了这项工作。雕像落成那天,人们纷纷去瞻仰,大家被伟人的丰功伟业折服,同时也都注意到雕像上的另一个名字:小马文。 修改后如下:(近80字) 英国有一个男孩,对学习毫无兴趣,因不堪学校的枯燥生活和父母望子成龙的压力愤而出走。在独自谋生的几年中,他终于在雕刻上找到自我,最终成了一位有名的雕刻家。 二、多个材料的使用,可以采用以下方法举例 1、排比假设反复句式举例法:如 (一) 凡成就一番事业者,无不是从小处做起,注意点点滴滴的积累,有意识地培养自己的品德才能,不断

自我完善的。若无每日闻鸡起舞坚持不懈的毅力,那么祖逖又怎能北伐中原而名垂千古!若无长年笔走龙蛇墨染池水的工夫,那么王羲之又怎能挥毫盖世被尊为书圣呢?若无半生钻研演算草稿盈筐的血汗,那么陈景润又怎能摘取明珠享誉世界呢?所以不积跬步,无以至千里;不积小流,无以成江海。 2、条件句式举例法: 勤学苦练是成功的必要条件。不是这样吗?有勤,才有“韦编三绝”的佳话,孔子才成为世界文化史上的名人之一;有勤,才有“闻鸡起舞”的美谈,祖逖方雄才大展,实现北伐报国的理想;有勤,才有张海迪才获得“当代保尔”的称号,才成为当代青年学习的楷模。由此可见,碌碌无为与大有作为之间差的不就是一个“勤”吗?勤,有如一架彩桥,把人们从无知引向有知,从有知引向有才,从有才引向有为…… 3、对比试举例法 走出属于自己的一步,要敢于挑战权威。普朗克提出了量子力学假设及普郎克公式,但是,他发现这一发现破坏了他一直崇拜并虔诚地信奉为权威的牛顿的理论,由于不敢走出属于自己的一步,他沮丧地取消了自己的假设,由此使物理学理论停滞了几十年。而爱因斯坦却大胆地走出了属于自己的一步,赞赏普朗克假设并向纵深引申,提出了光量子理论,随后又锐意破坏了牛顿的绝对时间和空间的理论,创立了震惊世界的相对论。由此可见,敢了敢于走出属于自己的一步,影响的不仅是个人,而且是整个人类。 第二部分:叙例后如何分析论证? 议论文事例论证五步法:分论点+诠释+论据+分析+结论 一、假设分析法 【例一】论点:生活的磨难可以激发创作灵感。 【假设分析】如果李白当了大官,享受荣华富贵,不用流浪江湖,那么诗仙的豪迈与脱俗肯定与他无缘;如果李煜一直当着皇帝,那么他就永远只会作一些才子佳人的词,而不会留下如此多的千古绝唱;如果没有国破家亡、颠沛流离的苦难,那么李清照也许只是一个平凡的封建妇女,而不会留下那么感人至深的婉约词作。可见,生活的苦难与磨练,是他们创作的源泉。 二、因果分析法(设问法) 【例】自信,但不能盲目 马谡镇守街亭,既不按诸葛亮的嘱咐部署行事,也不听王平的良言相劝,自认为胸有韬略,熟悉兵书一意孤行,不在要道口扎营,而是屯兵山上,结果被司马氏围山断水,放火烧山,蜀军不战而乱,几乎全军覆没。马谡自身被依军法处斩。 街亭失守,是因为马谡不懂兵法吗?不,他自幼熟读兵法,曾献计于诸葛亮,使其七擒孟获,平定南方边境;又离间曹睿与司马懿,使司马懿被罢官归田。马谡的失败,是因为他狂妄自大,固执己见,

如何打造一个品牌

如何打造一个品牌以及注意事项 一个好品牌是一种特殊的无形资产,它甚至比有形资产价值更高。而小企业由于自身条件所局限,必须从一开始就在经营企业的同时,策划、培育、经营、发展自己的品牌。> 选择一个好产品 如果没有“好产品” ,打造品牌就是一句空话。选产品要: 1、要有做区域品牌的思想。认真分析研究市场,要集中营销,先做区域品牌。 2、在既定的行业范围内,选择适合自己生产或经营的产品大类。 3、要考虑到产品的个性,找到产品的切入点。在所选定的产品大类中筛选符合要求的产品,进行深入细致的市场调查研究工作,将所选产品的范围逐步缩小。找准切入点是打造品牌的关键之一,这个切入点可以从生产线上找,可以从大环境上找,也可以从原料上找,有时还可以跳出产品这一概念和传统思维的圈子。 >起个好名宇 名字是品牌中可以用语言读出声的部分,是一个产品在市场上亮相时给消费者的第一印象。起名字:产品或企业的名称,在符合自身的特点和目标市场的文化心理的同时,还要有一定的包容性,为以后企业产品的延伸及新产品的推出奠定基础。另一方面,名字要能给人积极、美好的联想,要有独特性,能区别于其他产品,且不宜含有让消费者感觉生涩的字。 >设计一个好标识 标识虽不能用语言称呼,却可以表现产品、品牌的丰富内涵。 1、有自己独特的个性,能展示企业形象。 2、能把企业的主要信息传递给消费者。 3、易懂易记,能给人美好的联想。 > 注册一个好商标 企业单有一个好名字,好标识还不够,还要给它遮上一把“保护伞”。企业要把自己精心选取、设计的名字、标识拿到政府相关部门注册登记,获取它们的专用权。在注册时,还应注册防御性商标。 >定个好位置

用IAR建立属于自己的工程简明教程

&IAR的使用 A.实用快捷键 1.显示行号:在代码段点击右键,Options->Editor,勾选Show Line Numbers就可以了。 2.注释:Ctrl+K 取消注释:Ctrl+Shift+K 3.Ctrl+Shift+空格,可以使用IAR提供的内部代码的编写,如if,for,class. 4.格式化源码:Ctrl+T 5.程序{}花括号的配对内容查找:Ctrl+B则自动的把这段内容反色地选中。 6.自动缩进:选中某些行,然后Ctrl+Shift+i,可以实现自动的缩进。 7.调试:单步执行:F10 进入函数体执行: F11 B.建立新工程(不详细阐述)——使用V3.5固件库 1.新建一个文件夹Project用于存放整个工程,并在其下建立如下子目录Doc,Startup,STLib, System,User,EWARM,如图所示,这样管理较清晰。 Doc ——存放一些说明文档。 Startup ——存放系统启动文件,固件库中的一个iar/startup下有,具体加入一个即可,由自己芯片的flash来决定,具体在stm32f10x.h中有说明。如图: STLib ——存放STM32固件,包括inc和src两个文件夹,存放头文件和源代码。src中的文件可以直接添加进工程,或编译成动态链接库后添加进该目录下。

System ——存放系统的源代码,包括system_stm32f10x.c,core_cm3.c,stm32f10x_it.c,再在其中创建子目录inc存放对应的头文件,内容如下图: User ——用于存放用户程序,其下再新个子目录inc用于存放用户定义的头文件。 EWARM ——用于存放工作区,建立的工程文件,及调试中自动生成的其它文件,如下图: 2.打开IAR软件,File->new->workspace,然后project->Create new project,起名保存后,右 击工程选项进入option选项。 3.选择芯片。如图: 4.配置头文件及符号定义,如图所示在Aditional include directories文本框中添加所有头文 件对应的路径,在defined symbols中添加如下两个宏。STM32F10X_HD这个宏要根据芯片的flash大小来进行替换,具体在stm32f10x.h中有详细说明。

一段励志的话语给自己,做最好的自己经典语句

一段励志的话语给自己,做最好的自己经典语句 1、天才是百分之一的灵感,百分之九十九的血汗。 2、人生就像滚雪球,重要的是找到很湿的雪和很长的坡。 3、人生是一杯酒,人生是一声号角,人生是进军的战鼓。 4、我们人生中最大的懒惰,就是当我们明知自己拥有作出选择的能力,却不去主动改变,而是放任它的生活态度。 5、世上最重要的事,不在于我们在何处,而在于我们朝着什么方向走。 6、有多少次挥汗如雨,伤痛曾添满记忆,只因为始终相信,去拼搏才能胜利。 7、加油!努力!打死不放弃! 8、时时存好心,日日是好日。 9、不是不说,是说了根本起不到任何帮助,只有自己打碎牙齿往肚子里咽,各种苦楚跟谁说都没用,凡事只有靠自己才是最真的。 10、继续努力,相信自己,你会做得更好! 11、透过生死,才会明白健康的重要;透过得失,才是会明白淡泊的重要。做一个简单真实的自己,心安,便是活着的最美好最幸福

的状态。 12、世界上最大的敌人是自己;世界上最可怕的事是放弃;世界上最大的失败的原因是没有信心;世界上最悲哀的事情是自我感觉良好。 13、给装X的人一棒子至少证明你正常,至少他不敢再找你牛,耽误你宝贵的时间。 14、坚强的信心,能使平凡的人做出惊人的事业。 15、别去羡慕别人的风光,有本事自己闯一片辉煌。 16、生命不要求我们成为最好的,只要求我们做最大努力。 17、也许似乎大概是,然而未必不见得。 18、成功的关键不是努力去拷贝别人的特色方式,而是去学习如何发掘你自己独特的潜质。 19、敢于奋斗的人,心中不怕困难。 20、心若没有栖息的地方,到哪里都是在流浪。太柔软的心不敢敞开给人任意伤,只能背起坚硬的壳,继续流浪。 21、有时候,你越隐藏你对一个人的感觉,你陷得越深 22、精彩的人生总有精彩的理由,笑到最后的才会笑得最甜。 23、不论生活给予什么,都坦然的接受,那便是勇敢。

班主任,应打造自己的品牌

班主任,应打造自己的品牌 班主任,应打造自己的品牌 文/谢秋霞 当今社会追求品牌已成为一种时尚。很多人在进行精神投资或精神学习的时候,往往都是慕名而来。美国教育家杜威说:社会大学校,学校小社会。 可见,班级的建设也应有品牌意识。名牌集体一旦形成,学生自身便拥有一种成功的喜悦,会以在这样的班级而感到自豪。要建立品牌班集体,班主任可谓是责无旁贷。时代呼唤品牌,班主任,也应打造出自己的品牌! 一、建立品牌管理制度。 不以规矩无以成方圆,完善而有特色的班级管理制度,有助于良好班风学风的形成,有利于体现品牌班级形象的建立。因此,作为班主任要根据班级实际及学校各项规章制度要求,因班制宜、因人制宜地与学生一道制定体现时代特色的

班级学生管理制度,如值日制度、课前纪律制度、作业上交制度、班干轮流制度,使学生有规有矩。 二、营造品牌班级文化环境。 班级文化是班主任利用和创设班级的精神氛围、文化制度、文化关系、文化环境等来熏陶和培育学生文化人格的影响活动。班级文化环境是班级文化的重要组成部分。 要营造品牌班级文化环境,班主任需要及时捕捉教育的新信息,需要付出全身心的爱,需要创新意识,需要与班干部和学生一起群策群力策划和营造。 苏活姆斯基说过:无论是种植花草树木,还是悬挂图片标语,或是利用襁褓,我们都将从审美的高度深入规划,以便挖掘其潜移默化的育人功能,并最终连学校的墙壁也在说话的远大目标。 可见,对教室的精心包装,让教室的每个角落都具有教育内容,是多么富有教育意义。

在教室可利用内容丰富主题黑板报对学生进行有针对性的教育;利用一些角落展示学生的手抄报、美术作品、优秀习作能让学生体验到成功的喜悦;利用图书角可激发学生的阅读兴趣、提高阅读能力扩大知识视野;利用一两盆绿色职务,营造一种绿化美,让师生宁静,消除疲劳 进行班级文化建设,还可以通过设计班徽、确立班训、出版班报来增强同学们对班的归属感,提高班级小主人意识。 条件成熟的话,甚至建立起班级网页,为学生拓宽展示自己与展示班级的空间,就会增加班级的凝聚力,为打造班级的品牌形象提供了一个很有效的渠道。 三、建立品牌班干队伍。 建立一支德才兼备的品牌班干队伍,能让班主任进行班级工作如鱼得水。班干部作为联系班主任与学生的桥梁,班干部整体性的好坏往往能够决定一个班级的精神面貌与风气。 在班级建设过程中引入竞争机制,班干部上任采取上岗,通过自荐、推荐、民主评议产生,让学生民主推选出他们心目中的榜样。当选的干部应具有较强的号召力和自我管理能力。

如何建立一个自己的FTP服务器

如何建立一个自己的FTP服务器(SERV-U使用教程) 如何建立一个FTP服务器(SERV-U使用教程) 在网上做过软件下载的人都知道,建立一个FTP下载服务器相对比较简单,一般用WIN2000下自带的IIS就可以,但IIS在功能上好多都不尽人如意,下面我就介绍一款功能非常强大,但使用简单的FTP 服务器构建软件-Serv-U FTP Server,让我们也来体验一下自己DIY FTP服务器的快乐! 在说明使用之前,让我先大致介绍一下Serv-U: Serv-U 是一个可以运行于Windows 95/98/2000/ME 和Windows NT 4.0下的FTP服务器程序 有了它,你的个人电脑就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP 协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。FTP协议规定了计算机之间的标准通讯方式,使所有不同类型,不同操作系统,不同格式的电脑之间得以互换文件。它可以用最简单的方式创建用户帐号,并且在硬盘空间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。 有许多FTP服务器和客户端软件可用于不同的系统中,Serv-U是用于运行MS-Windows 并且已安装了WinSock 版本 1.1 兼容

TCP/IP 协议的个人电脑中的,这几乎包括了所有的Windows操作系统。 Serv-U由两大部分组成,引擎和用户界面。Serv-U引擎(ServUDaemon.exe)其实是一个常驻后台的程序,也是Serv-U整个软件的心脏部分,它负责处理来自各种FTP客户端软件的FTP命令,也是负责执行各种文件传送的软件。在运行Serv-U引擎也就是ServUDaemon.exe文件后,我们看不到任何的用户界面,它只是在后台运行,通常我们无法影响它,但在ServUAdmin.exe中我们可以停止和开始它。Serv-U引擎可以在任何Windows平台下作为一个本地系统服务来运行,系统服务随操作系统的启动而开始运行,而后我们就可以运行用户界面程序了。在Win NT/2000系统中,Serv-U会自动安装为一个系统服务,但在Win 9x/Me 中,你需要在“服务器”面板中选择“自动开始”,才能让它转为系统服务。Serv-U用户界面(ServUAdmin.exe)也就是Serv-U管理员,它负责与Serv-U引擎之间的交互。它可以让用户配置Serv-U,包括创建域、定义用户、并告诉服务器是否可以访问。启动Serv-U管理员最简单的办法就是直接点接系统栏的“U”形图标,当然,你也可以从开始菜单中运行它。在此有必要把Serv-U中的一些重要的概念给大家讲清楚:每个正在运行的Serv-U引擎可以被用来运行多个“虚拟”的FTP服务器,在管理员程序中,每个“虚拟”的FTP服务器都称为“域”,因此,对于服务器来说,不得不建立多个域时是非常有用的。每个域都有各自的“用户”、“组”和设置。一般说来,“设置向导”会在你第一次运行应用程序

创造造句

创造造句 1、从来就没有救世主也不靠神仙皇帝,要创造幸福生活必须全靠我们自已。 2、我从来不知道什么是苦闷,失败了再来,前途是自己创造出来的。 3、假如上帝确实不存在,那么就有必要创造一个来。 4、黄昏,夕阳已它最后的余晖,创造了永恒的美,留在远路归来的人们记忆里,形成永远的美回忆。 5、皇家殿下这个称呼是由爱丁堡公爵创造的。 6、不读书也就不可能有什么革亲和创造! 7、风呼呼的吹着好似一个奏乐家,雨一边附和着一边创造出一的意境。 8、穷爸爸教我怎样写一份出色的简历以便找到一份好工作。富爸爸教我写下雄心勃勃的事业规划和财物计划,进而创造创业机会。 9、人们把城市像巨钉一样,楔入旷野,并以此为据点,顽强地繁衍着后代,创造出溢光流彩的文明。 10、资本主义这个词是卡尔马克思创造的。

11、为什么大自然要不厌其烦地创造蚊子呢? 12、大自然肯定是怀着偏爱的心情创造了她。 13、日出的辉煌,只需一个太阳创造,彩虹的美丽却需要无数水珠的凝聚。大好企业别时容易进时难。 14、人们往往对不明真相的事物产生敬畏或好奇,为他们创造各种各样的形象,就如神和恶魔。 15、生命就是让我们珍惜每分每秒,活的淋漓尽致,活的辉煌灿烂;生命就是让我们创造价值,努力奋斗,精彩回味;生命就是让我们热爱善待,有限的彼岸,无限的追求! 16、生命是永恒不断的创造,因为在它内部蕴含着过剩的精力,它不断流溢,越出时间和空间的界限,它不停地追求,以形形**的自我表现的形式表现出来。 17、人生要敢于接受挑战,经受得起挑战的人才能够领悟人生非凡的真谛,才能够实现自我无限的超越,才能够创造魅力永恒的价值。 18、复杂的事情要简单做,简单的事情要认真做,认真的事情要重复做,重复的事情要创造性地做。 19、不急功近利,不患得患失,坚定不移地奠定基础、创造条件,自会有妙手偶得的乐趣。

个人网站如何打造自己的品牌.

个人网站如何打造自己的品牌 时间:2010-01-26 Tag:个人网站品牌 品牌是给拥有者带来溢价、产生增值的一种无形的资产,他的载体是用以和其他竞争者的产品或劳务相区分的名称、术语、象征、记号或者设计及其组合,增值的源泉来自于消费者心智中形成的关于其载体的印象。 品牌就是美誉度,就是生命力,如果你想做一个长久的有生命力的网站,你就需要打造你的网站的品牌力!品牌力包括几个方面,品牌的一般定义。 第一:一般意义上的定义:品牌是一个名称、名词、符号或设计,或者是它们的组合,其目的是识别某个销售者或某群销售者的产品或劳务,并使之同竞争对手的产品和劳务区别开来。 第二:作为品牌战略开发的定义:品牌是通过以上这些要素及一系列市场活动而表现出来的结果所形成的一种形象认知度,感觉,品质认知,以及通过这些而表现出来的客户忠诚度,总体来讲它属于一种无形资产。所以这时候个品牌是作为一种无形资产出现的。 第三:品牌是企业、产品与消费者建立的一种关系。 作为一个个人网站,我们不能仅仅满足在每天有多少访问量,有多少用户,我们还需要透过我们的网站本身看到其品牌的价值,是不是具有独一无二的品牌价值,我们的LOGO,我们的名称,我们的整个网站布局,我们网站给人的第一印象我们的网站与网友的互动,相互之间的关系等等,都反映了网站的品牌的价值。切实打造网站品牌,维护网站品牌,需要注意以下几个方面。 第一:品牌是一种无形价值、无形资产,需要我们细心呵护,每个网站都是从无到

有,从几个用户发展到从千上万的用户群,不管我们的网站的访问量,用户群数是多还是少,我们都需要细心呵护我们的网站,就像养育一个子女一样去对待我们的网站,像对待我们的衣食父母一样对待网站的用户,可以相信这样的网站一定具有生命力,具有品牌价值的。 第二:品牌的核心是一种美誉度,是考验我们的网站的最重要的价值系数,但基础就是我们的网站具有实用性,是一个对网友真正的具有实用的网站,否则,垃圾网站做的再完美,也不过垃圾网站,所以个人网站定位一定要清晰,要做一个对网友,对社会有用的网站,这样,网站才有可能有品牌,才才会产生价值。 第三:品牌的建立不是一蹶而就的事情,它需要我们长期不懈的努力,品牌的建立从来都不是一件轻松的事情,它同样需要我们坚持,专注,俗话说罗马不是一天建立起来的,网站的品牌也不是一朝一夕能够建立起来的。 如果你今天想着做论坛,明天又想着做SNS,今天用DISCUZ,过了一段时间又换成帝国,这样的网站能够建立品牌美誉度吗?任何网站都需要坚持与专注的,就像我现在的网站岳阳论坛,就打算用5年时间来打造岳阳最权威的门户网站。 第四:品牌的提升需要我们注意细节,有一句话说的好,细节注定成败,很多人也许想到得品牌就是需要宣传,需要我们打广告,其实宣传只是网站品牌建立的一个部分,更重要的是网站的口口相传,这就需要我们努力提升用户体验感觉,不放过任何一个有损用户体验的地方,需要我们去抓细节,让用户真正感觉到网站的价值。

打造属于自己的语言特色

打造属于自己的语言特色 ——读《名师最具渲染力的口才细节》有感 “你会讲话吗?”当然,只要不是哑巴。 “你会讲课吗?”当然吗,只要是个教师。 同样是讲课,有的教师讲的课让学生听起来兴趣盎然,而有的教师讲的课却让学生听的味同嚼蜡,疲惫不堪。 同样是讲课,为什么效果会有如此大的差别呢?当然,这其中有很多原因,但也有很大一部分原因是教师的语言艺术。 读了《名师最具渲染力的口才细节》之后,我感觉受益匪浅。 首先,优秀的教师往往有着自己独特的教学语言。 如同电影语言、话剧语言、相声语言一样,课堂教学语言属于专业语言。著名教育家苏霍姆林斯基认为,教师的语言在很大程度上决定着学生在课堂上的脑力劳动的效率,教师高度的语言修养是合理利用教学实践的重要条件。名师之所以能够在课堂上强烈地吸引学生,让他们爱上学习、学会学习,并取得骄人的成绩,很大程度上是因为他们拥有属于自己的语言特色。在本书的教学案例中,有的名师慷慨激昂,声音抑扬顿挫;有的名师深沉浑厚,语言意味深长;有的名师旁征博引,挥洒自如;有的名师风趣幽默,连珠妙语。 其次,优秀的教师都能用最简约的表达提高课堂教学效果。 干净利索,抓住重点,简洁概括,注重逻辑,有的放矢。根据学生的年龄特点,使用他们容易接受和理解的话语,用最少的语言表达尽量多的内容,在最短的时间内准确无误地向学生传递丰富的教学信息。教学语言想要表达地位,用词就要力求准确,准确地表达内涵,不能含糊其辞、模棱两可。在课堂上,无论是对自然现象、社会现象的描述,还是对概念、原理、定义的阐述,教师都要做到用词确切,避免让学生产生疑惑和误解。有时还需要引经据典或引用一些参考资料,特别是经典著作的论述或重要文件,用词一定要完整规范,准确到位,绝不可断章取义。在备课时,教师应该考虑到怎样用准确到位的词语表达出自己的所思所想,使自己的讲解更容易被接受,以及如何应对课堂上的意外情况。 第三,优秀的教师在上课时能让学生如沐春风。 中国有一句老话∶“有意的话一句三冬暖,恶语伤人六月寒。”教师应该是

走出自己的步伐精选作文600字

走出自己的步伐精选作文600字 也许,你航行一生也没有到达彼岸;也许,你攀登了一世。也没能登上顶峰。但是,能触礁的,未必不是勇士;敢失败的,未必不是英雄。时光荏苒,我们正值风华正茂,要坚决信念地走出自己的步伐。 贝多芬被命运埋进死寂的空谷,但他竖起了自己那两只不屈与激情的耳朵,创造出了不朽的音乐著作。 张艺谋百般碰壁后,只剩下了秦川人瘦而韧的骨架,侧身从三指门缝中挤进了电影学院,最终也挤进了灿烂的世界影廊。 才华固然重要,但那种拼死要扼住命运咽喉的威猛气势犹为撼史撼人。 前人亦如此,我们又怎可甘于后人呢?我们要昂起不屈的头颅,走出自己的步伐! 走出自己的步伐。“笔杆没多重,无志拿不动”,人生道路需要志向作指路明灯。学习也是一样。在枯燥漫长的学习中,你慵懒时,它呼唤你勤奋;你昏睡时,它呼唤你清醒;你傲慢时。他呼唤你谦逊;你鲁莽时,它呼唤你慎重;你跌倒时,他呼唤你站立。学习要兢兢业业,有志向的脚步紧随,人生的步伐将更自信,稳健! 走出自己的步伐。漫漫人生,困难不断。我们要把挫折看作优美乐章中的一串串低音;把困难看作前进路上的一丛丛荆棘。那么奋斗就是成功道路上的一行行坚决的脚步;勤劳就是收获希望时洒下的一滴滴汗水。坦然面对人生路上的不平坦,坚决信念,勇敢地迈出自己

的步伐! 走出自己的步伐。命运多舛,既是说它无常,也是说它机遇丛生,要抓住有限的时机,保持坚决不移的毅力,永不言弃的信念,付出百倍的努力,去创造属于自己的一片天。 天助自助者,运降不降人。 人生重在把握,贵在追求,志在超越。面对难测的人生,我们应有“采菊东篱下,悠然见南山”的淡定,要有“回首向来萧瑟处,归去,也无风雨也无晴”的洒脱,须有“仰天大笑出门去,我辈岂是蓬蒿人”的淡定,坦然面对人生,展望美妙将来!

快递企业如何打造属于自己的“品牌之路”

快递企业如何打造属于自己的“品牌之路”

递企业品牌战略的有效实施,必须在人员、机构、运营、战略、定位等方面狠下功夫。 1.3 研究思路和方法 本文主要采取“发现问题、分析问题、解决问题”的思路,综合运用企业品牌策略、企业管理理论、人力资源理论等相关理论,采取文献分析、综合分析、案例分析等综合方法进行研究,查阅了大量关于邮政速递企业品牌化发展战略方面的资料,明确了相关概念和理论,同时对个别邮政速递企业进行了实地调查走访,以期了解更多的真实情况。努力使本文更具理论性、实践性、前瞻性和操作性。

2 邮政速递企业品牌化发展战略概述 2.1 品牌的定义 品牌(brand)一词来源于古挪威文字“brandr”,其含义具有“烙印”的意思,就是如何在人们心中留印象。本文认为,尽管品牌是一个十分复杂和抽象的概念,但通俗的讲,企业品牌就是一个企业的符合和设计,或者说是一个名字和称谓,其目的就是让自己的产品或服务“与众不同”,在同行业中形成自身的特色和比较优势,是企业市场竞争能力、竞争实力和竞争优势的综合反映。 2.2 品牌战略的内涵 通过品牌内涵的分析,本文认为,所谓品牌战略,就是企业着眼于提高企业的市场竞争能力、竞争实力和竞争优势,以打造企业品牌为目标,以品牌经营为手段,以创新创造为动力,通过对市场的观察判断、对企业的战略规划、对技术的持续开发、对质量的品质保证、对服务的全面系统、对营销的渠道拓展等综合措施,使企业品牌不断进行积累的一系列管理和营销手段,使广大消费者能够记住、认同和选取企业的品牌产品和品牌服务,以此不断提高企业的市场竞争力,使企业始终立于不败之地。 2.3 邮政速递企业实施品牌战略的重要性 2.3.1 有利于争取客户和提高效益 随着我国现代物流业的快速发展,速递企业呈现出蓬勃发展的良好生机,无论是速递企业的数量还是规模都得到了进一步扩大,邮政速递企业要想更好的争取客户和提高效益,就必须高度重视品牌战略的实施。邮政速递企业实施品牌化发展策略,有利于节省广告费用,

相关主题
文本预览
相关文档 最新文档