中级会员
 
- 积分
- 202
- 金钱
- 202
- 注册时间
- 2014-9-16
- 在线时间
- 11 小时
|
5金钱
如题,原子哥 的RTC单独测试没有问题,
现将其放入UCOS系统中,进入一次任务后就进入HardFault_Handler(void),不动了
怎么回事呢?将RTC的任务屏蔽后其他任务都没有问题?请大侠们指点
原子哥的RTC裸机程序没问题。
/////////////////////////////////////////////////////////////////////////////////////
我把他改为UCOS系统里面,程序如下:
//RTC????????
#define RTC_TASK_PRIO 10
#define RTC_STK_SIZE 64
OS_STK RTC_TASK_STK[RTC_STK_SIZE];
void rtc_task(void *pdata);
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr;
pdata = pdata ;
OSStatInit(); //??????????????
OS_ENTER_CRITICAL(); //??????
#if LWIP_DHCP
lwip_comm_dhcp_creat(); //???¨DHCP????
#endif
OSTaskCreate(led_task,(void*)0,(OS_STK*)&LED_TASK_STK[LED_STK_SIZE-1],LED_TASK_PRIO); //???¨LED????
OSTaskCreate(key_task,(void*)0,(OS_STK*)&KEY_TASK_STK[KEY_STK_SIZE-1],KEY_TASK_PRIO); //???¨KEY????
OSTaskCreate(display_task,(void*)0,(OS_STK*)&DISPLAY_TASK_STK[DISPLAY_STK_SIZE-1],DISPLAY_TASK_PRIO); //????????
OSTaskCreate(rtc_task,(void*)0,(OS_STK*)&RTC_TASK_STK[RTC_STK_SIZE-1],RTC_TASK_PRIO);
OSTaskSuspend(OS_PRIO_SELF); //????start_task????
OS_EXIT_CRITICAL(); //??????
}
void rtc_task(void *pdata)
{
// pdata = pdata;
u8 tbuf[40];
while(1)
{
RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
sprintf((char*)tbuf,"Time:%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds);
LCD_ShowString(30,50,210,16,16,tbuf);
RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
sprintf((char*)tbuf,"Date:20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date);
LCD_ShowString(30,70,210,16,16,tbuf);
sprintf((char*)tbuf,"Week:%d",RTC_DateStruct.RTC_WeekDay);
LCD_ShowString(30,90,210,16,16,tbuf);
OSTimeDlyHMSM(0,0,0,500);
}
}
其他都没变,就是将原子哥while里的程序,移植到这里变成一个任务,然后就进入HardFault_Handler(void),不动了
为什么呢?
|
|