Copyright (c) 2014 苏州大学飞思卡尔实验室(版权声明)
All rights reserved.

《AMQXFW_LWSem》工程说明
时          间：2014-08-12   
版          本：V3.0
作          者：王磊

1. 工程概述
(1)本工程为K60微控制器MQX系统应用工程，提供MQX轻量级信号量的使用样例
(2)工程中使用了两个轻量级信号量：SEM_READ读信号量（初值0）与SEM_WRITE写信号量（初值1），分别用来同步
读数据任务与写数据任务对共享数据区的访问
(3)初始化串口4作为默认通信设备与外界通信，波特率为9600，1位停止位，无校验
(4)首次执行读数据任务时创建NUM_WRITERS（宏常量，在app_inc.h中定义）个写数据任务，所写数据在写数据任务创建时由参数传入。
读数据任务必须等待共享数据区中有数据才能读；每次只有1个写数据任务能对共享数据区进行数据写入
(5)5个任务：
    task_main:开总中断，系统自启动任务，打印欢迎信息，创建其它任务
    task_A:闪烁小灯1，每1秒切换一次亮暗状态
    task_B:闪烁小灯2，每2秒切换一次亮暗状态
    task_read:读数据任务。首次执行时创建若干写数据任务。等待获取SEM_READ信号量读取共享区数据，读取完成后释放SEM_WRITE信号量
    task_write:写数据任务。等待获取SEM_WRITE信号量向共享区数据写数据，写入完成后释放SEM_READ信号量
(6)系统使用外部扩展48M有源晶振，工作时钟总线频率为96M

2. 软件环境
(1)Freescale Kinetis Design Studio v1.1.0
(2)Freescale MQX 4.1.0

3. 硬件环境
(1)K60-C型板
(2)串口4发送引脚为PTE24,接收引脚为PTE25
(3)串口5发送引脚为PTD9,接收引脚为PTD8
(4)串口转USB接线：白色：发送线(Tx,Transmitter);绿色：接收线(Rx,Receive);黑色：地线

4. 实验现象
(1)通过串口4显示创建的若干个写任务的ID，如"write_task created,task_id:0x10006"
(2)读任务与写任务交替执行，并将执行过程通过串口4显示出来，如：
Reading...
Writing A...
Write A completed
Writing B...
Writing C...
Reading result:A
Write B completed
Writing A...
Reading...
Reading result:B
Writing B...
Write C completed
Reading...
Reading result:C
(3)指示灯1每1秒闪烁1次，指示灯2每2秒闪烁1次

5. 备注
(1)本工程使用的是MQX自带的设备驱动如，GPIO和UART,并使用指示灯应用构件light。
(2)若要修改设备驱动的属性可以在工程目录bsp下的init_gpio.c和init_uart.c文件中修改相关的结构体变量
(3)可以通过使用config目录下的宏定义来添加和删除相关的设备驱动，如"#define BSPCFG_ENABLE_ITTYE      1",
为MQX系统添加带有中断的串口设备4
(4)在任务运行时需要使用MQX的驱动设备时,可以使用"fp=fopen("ittye:",IO_SERIAL_RAW_IO);"这样的形式
(5)用户自定义的ISR放在isr.h中声明,在isr.c中实现