新手上路
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2019-5-28
- 在线时间
- 14 小时
|
最近需要做一个基于UCOSII的音乐播放器,使用战舰板载VS1053实现硬件解码,参考原子哥的裸机例程,自己直接将播放音乐作为一个任务,然后再添加其余的任务,但是后面添加的任务都没法得到运行。还有关于任务调度,我使用OSTimeDly()做任务调度延时,原子哥使用delay_ms(),为什么我用OSTimeDly程序会死在一个位置,当有多任务的时候也没法进行切换。希望懂的大佬能帮忙看看,谢谢。
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "text.h"
#include "vs10xx.h"
#include "mp3player.h"
#include <includes.h>
#define TASKA_PRIO 5 //èÎÎñAóÅÏ輶
#define STK_TASKA_SIZE 512 //èÎÎñA¶ÑÕ»′óD¡
OS_STK TASKA_STK[STK_TASKA_SIZE]; //èÎÎñA¶ÑÕ»
#define TASKB_PRIO 4 //èÎÎñBóÅÏ輶
#define STK_TASKB_SIZE 256 //èÎÎñB¶ÑÕ»′óD¡
OS_STK TASKB_STK[STK_TASKB_SIZE]; //èÎÎñB¶ÑÕ»
#define TASKC_PRIO 7 //èÎÎñCóÅÏ輶
#define STK_TASKC_SIZE 64 //èÎÎñC¶ÑÕ»′óD¡
OS_STK TASKC_STK[STK_TASKC_SIZE]; //èÎÎñC¶ÑÕ»
OS_EVENT * KEYbox; //′′½¨ÏûÏ¢óêÏä
void TASKA(void *pdata)
{
u32 cpu_sr;
pdata=pdata;
while(1)
{
POINT_COLOR = BLACK;
mp3_play();
OSTimeDlyHMSM(0,0,0,20);
};
}
void TASKB(void *pdata)
{
pdata=pdata;
while(1)
{
// Key_value=mp3_key();
// if(!Key_value)
// {
// OSMboxPost(KEYbox,(void*)Key_value);
// }
// OSTimeDly(10);
}
}
void TASKC(void *pdata)
{
pdata=pdata;
while(1)
{
LED1=!LED1;
OSTimeDly(100);
};
}
void TaskCreate(void)
{
u32 cpu_sr;
// KEYbox=OSMboxCreate((void*)0);
OS_ENTER_CRITICAL();
OSTaskCreate(TASKC,(void *)0,(OS_STK*)&TASKC_STK[STK_TASKC_SIZE-1],TASKC_PRIO);
OSTaskCreate(TASKA,(void *)0,(OS_STK*)&TASKA_STK[STK_TASKA_SIZE-1],TASKA_PRIO);
// OSTaskCreate(TASKB,(void *)0,(OS_STK*)&TASKB_STK[STK_TASKB_SIZE-1],TASKB_PRIO);
OS_EXIT_CRITICAL();
}
main.c
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "text.h"
#include "vs10xx.h"
#include "mp3player.h"
#include <includes.h>
#include <taskcof.h>
/*****************************************************/
///////////////////////////////////////////////////////
/**************UCOSii_òôàÖ2¥·ÅÆ÷**********************/
void system_init(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
KEY_Init();
LCD_Init();
W25QXX_Init();
VS_Init();
my_mem_init(SRAMIN);
exfuns_init();
f_mount(fs[0],"0:",1);
f_mount(fs[1],"1:",1);
POINT_COLOR=RED;
while(font_init())
{
LCD_ShowString(30,50,200,16,16,"Font Error!");
delay_ms(200);
LCD_Fill(30,50,240,66,WHITE);
}
}
int main(void)
{
system_init();
OSInit();
TaskCreate();
OSStart();
}
|
|