/**
******************************************************************************
* @file    roject/STM32F10x_StdPeriph_Template/main.c
* @author MCD Application Team
* @version V3.5.0
* @date 08-April-2011
* @brief Main program body
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "includes.h"
//Mini STM32开发板范例代码10
//TFTLCD显示 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//Mini STM32开发板扩展实例
//ucos 实验
//正点原子@ALIENTEK
//技术支持:www.openedv.com
//设置任务堆栈大小
#define LED_STK_SIZE 32
#define LED1_STK_SIZE 33
#define LCD_STK_SIZE 64
#define START_STK_SIZE 128
#define ADC_STK_SIZE 50
//设置任务优先级
#define LED_TASK_Prio 9
#define LED1_TASK_Prio 5
#define LCD_TASK_Prio 4
#define START_TASK_Prio 10
#define ADC_TASK_Prio 8
#define BUF_SIZE 8
//任务堆栈
OS_STK TASK_LED1_STK[LED_STK_SIZE];
OS_STK TASK_LED_STK[LED1_STK_SIZE];
OS_STK TASK_LCD_STK[LCD_STK_SIZE];
OS_STK TASK_START_STK[START_STK_SIZE];
//任务申明
void TaskStart(void *pdata);
void TaskLed(void *pdata);
void TaskLed1(void *pdata);
void TaskLCD(void *pdata);
//系统时钟配置函数
void SysTick_Configuration(void);
u8 colorIndex=0;
u16 colorTable[]={BLACK,YELLOW,BLUE,RED,GREEN};
int main(void)
{
SystemInit();
delay_init(72); //延时初始化
NVIC_Configuration();
uart_init(9600);
LED_Init();
LCD_Init();
// POINT_COLOR=RED;
LCD_Clear(BLUE);
//SysTick_Configuration();
OSInit();
OSTaskCreate( TaskStart, //task pointer
(void *)0, //parameter
(OS_STK *)&TASK_START_STK[START_STK_SIZE-1], //task stack top pointer
START_TASK_Prio ); //task priority
OSStart();
return 0;
}
//开始任务
void TaskStart(void * pdata)
{
pdata = pdata;
OS_ENTER_CRITICAL();
OSTaskCreate(TaskLed, (void * )0, (OS_STK *)&TASK_LED_STK[LED_STK_SIZE-1], LED_TASK_Prio);
OSTaskCreate(TaskLed1, (void * )0, (OS_STK *)&TASK_LED1_STK[LED1_STK_SIZE-1], LED1_TASK_Prio);
OSTaskCreate(TaskLCD, (void * )0, (OS_STK *)&TASK_LCD_STK[LCD_STK_SIZE-1], LCD_TASK_Prio);
OSTaskSuspend(START_TASK_Prio); //suspend but not delete
OS_EXIT_CRITICAL();
}
//任务1
//控制DS0的亮灭.
void TaskLed(void *pdata)
{
while(1)
{
LED0=!LED0;
OSTimeDlyHMSM(0,0,0,500);
}
}
//任务2
//控制DS1的亮灭.
void TaskLed1(void *pdata)
{
while(1)
{
LED1=!LED1;
OSTimeDlyHMSM(0,0,0,600);
}
}
void TaskLCD(void *pdata){
while(1)
{
if(colorIndex==5)
colorIndex=0;
LCD_Clear(colorTable[colorIndex]);
colorIndex++;
OSTimeDlyHMSM(0,0,0,400);
}
}
//void SysTick_Configuration(void)
//{
//SysTick_Config(SystemCoreClock / 1000); //Initialize and start the SysTick counter and its interrupt.
//
卡死了这是什么问题呢?求大侠指教
|