谢谢你哟!今天晚上回来再调了一下,调通了3个串口!已经确定是uCOS的问题,但是我觉得是设置问题,就是允许执行的最多的人任务数问题!除了os.config.h这个文件里设置外,还有哪里可以设置呢?
我可以执行的代码如下,没有在主函数里执行,在主开始任务里执行的;
static void taskStart (void *parg)
{
// char *DisplayPoint_R;
// char *DisplayPoint_G;
// char const *RDataPoint;
// char const *GDataPoint;
// int i,j,k;
int row;//,column;
// char *DisplayAddr, *ImageAddr;
(void)parg;
targetInit(); /* Initialize the target's MCU */
/* 初始化目标单片机 */
#if OS_TASK_STAT_EN > 0
OSStatInit(); /* Enable statistics */
/* 使能统计功能 */
#endif
/*
* Create the other tasks here. 在这里创建其他任务
*/
#if 0
OSTaskCreate (taskLed, (void *)0,
&GstkLed[TASK_LED_STK_SIZE-1],
TASK_LED_PRIO); /* LED数据更新任务 */
#endif
OSTaskCreate (Uart0TxRxTest, (void *)0,
&GstUart0[TASK_UART0_STK_SIZE-1],
TASK_UART0_PRIO);
OSTaskCreate (Uart2TxRxTest, (void *)0,
&GstUart2[TASK_UART2_STK_SIZE-1],
TASK_UART2_PRIO);
OSTaskCreate (Uart1TxRxTest, (void *)0,
&GstUart1[TASK_UART1_STK_SIZE-1],
TASK_UART1_PRIO);
#if 0
OSTaskCreate (taskLedupdate, (void *)0,
&GstkLedupdate[TASK_LEDUPDATE_STK_SIZE-1],
TASK_LEDUPDATE_PRIO); /* LED数据更新任务 */
OSTaskCreate (taskKeyboard, (void *)0,
&GstkKeyboard[TASK_KEYBOARD_STK_SIZE-1],
TASK_KEYBOARD_PRIO); /* LED数据更新任务 */
#endif
ledboardDis();
while (1)
{
for(row = 0; row < LED_LEDBOARD_SCAN; row ++)
{
SerialDataForLED_RG(LEDDisplay_RAM[0],row*LED_LEDBOARD_WIDTH, LED_LEDBOARD_WIDTH, 8,LED_LEDBOARD_WIDTH*LED_LEDBOARD_SCAN);
// SerialDataForLED_RG2(LEDDisplay_RAM[0],row*LED_LEDBOARD_WIDTH, LED_LEDBOARD_WIDTH, 8,LED_LEDBOARD_WIDTH*LED_LEDBOARD_SCAN);
ledboardDis(); //禁止LED面板
ledboardRow(row); //对应的行扫描
ledboardLock(); //锁存串行数据
ledboardEn(); //使能LED面板串行数据
OSTimeDly(50); /* 延时1ms秒 */
}
}
// while (1) {
// OSTaskSuspend(OS_PRIO_SELF); /* The start task can be pended*/
// /* here. 启动任务可在这里挂起 */
// }
} |