OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4451|回复: 1

老大,我用uCOSii遇到大麻烦了 = =

[复制链接]

10

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2013-7-16
在线时间
4 小时
发表于 2013-10-27 11:24:29 | 显示全部楼层 |阅读模式
/*实验现象是:烧一次代码时间更新一次,屏幕可以显示当前时间,但是时间不走。两个小灯可以正常闪烁,可是RTC这个任务优先级比小灯高,当执行到小灯的延时时应该回到RTC了啊,结果却停在了小灯闪烁,这是为什么啊?


#include "stm32f10x_lib.h"

#include "ad.h"
#include "lcd.h"
#include "flash.h"
#include "mmc_sd.h"
#include "text.h"
#include "fat.h"
#include "fontupd.h"
#include "rtc.h"
#include "ds18b20.h"

#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "includes.h"

u8 i;

const u8 *COMPILED_DATE=__DATE__;//获得编译日期
const u8 *COMPILED_TIME=__TIME__;//获得编译时间  


/////////////////////////UCOSII任务设置///////////////////////////////////
//START 任务
//设置任务优先级
#define START_TASK_PRIO       10 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE   64
//任务堆栈
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);
    
//LED0任务
//设置任务优先级
#define LED0_TASK_PRIO      
//设置任务堆栈大小
#define LED0_STK_SIZE       64
//任务堆栈
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);


//LED1任务
//设置任务优先级
#define LED1_TASK_PRIO      
//设置任务堆栈大小
#define LED1_STK_SIZE   64
//任务堆栈
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//任务函数
void led1_task(void *pdata);





//RTC任务
//设置任务优先级
#define RTC_TASK_PRIO      
//设置任务堆栈大小
#define RTC_STK_SIZE   64
//任务堆栈
OS_STK RTC_TASK_STK[RTC_STK_SIZE];
//任务函数
void rtc_task(void *pdata);




int main(void)
{
 
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
uart_init(72,9600); //串口1初始化 
LCD_Init(); //初始化液晶
SPI_Flash_Init(); //SPI FLASH初始化
Font_Init();
//RTC_Init();
 
LCD_Clear(BLACK  );//清屏
POINT_COLOR=BRRED;
  BACK_COLOR= BLACK;

 
LED_Init();
LED_Init();   //初始化与LED连接的硬件接口
RTC_Init();
OSInit();   
  OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
OSStart();    
}

 
//开始任务
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
pdata = pdata; 
  OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)    
  OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);   
  OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
// OSTaskCreate(ds18b20_task,(void *)0,(OS_STK*)&DS18B20_TASK_STK[DS18B20_STK_SIZE-1],DS18B20_TASK_PRIO);
OSTaskCreate(rtc_task,(void *)0,(OS_STK*)&RTC_TASK_STK[RTC_STK_SIZE-1],RTC_TASK_PRIO);
// OSTaskCreate(main_task,(void *)0,(OS_STK*)&MAIN_TASK_STK[MAIN_STK_SIZE-1],MAIN_TASK_PRIO);
  
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}

//LED0任务
void led0_task(void *pdata)
{
while(1)
{
LED0=0;
delay_ms(80);
LED0=1;
delay_ms(920);
}
}

//LED1任务
void led1_task(void *pdata)
{  
while(1)
{
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300);
}
}



void rtc_task(void *pdata)
{   
u8 t=0;
while(1)
{
RTC_Init(); 
      Auto_Time_Set();
if(t!=timer.sec)
{
t=timer.sec;
//显示大体的时钟
POINT_COLOR=GBLUE;
BACK_COLOR=BLACK ;
LCD_ShowBigNum(0,100,timer.hour);//显示时
LCD_ShowBigChar(60,100,':'); //"/"
LCD_ShowBigNum(90,100,timer.min);//显示分
LCD_ShowBigChar(150,100,':'); //"/"
LCD_ShowBigNum(180,100,timer.sec);//显示秒
POINT_COLOR=BRRED;
Show_Str24(120,190,"星期",1);  
switch(timer.week)
{
  
case 0:
Show_Str24(170,190,"一",0);
break;
case 1:
   Show_Str24(170,190,"二",0);
break;
case 2:
Show_Str24(170,190,"三",0);
break;
case 3:
Show_Str24(170,190,"四",0);
break;
case 4:
Show_Str24(170,190,"五",0);
break;
case 5:
Show_Str24(170,190,"六",0);
break;
case 6:
Show_Str24(170,190,"七",0);
break;  
}
POINT_COLOR=GREEN ;
LCD_Show2Num(5,193,(timer.w_year/100)%100,2,16,0);//显示年  20/19  
       LCD_Show2Num(21,193,timer.w_year%100,2,16,0);     //显示年  
       LCD_ShowString(37,193,"-"); //"-"
       LCD_Show2Num(45,193,timer.w_month,2,16,0);        //显示月
       LCD_ShowString(61,193,"-"); //"-"
       LCD_Show2Num(69,193,timer.w_date,2,16,0);         //显示日
}
delay_ms(10);
}
}























正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2013-7-16
在线时间
4 小时
 楼主| 发表于 2013-10-27 11:37:37 | 显示全部楼层
我貌似有地方搞错了,我再瞅瞅....= =
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 21:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表