dragonwww 发表于 2013-12-5 16:46:17

STM32F051 + RT Thread 偶尔程序上电不启动呢

情况是这样:原来F103的程序移植到了F051上,调试时也能正常运行,而且加载着JLINK时很少出错,但拔掉JLINK后上电启动一二十次就能有一次上电后程序不运行的情况。
我特地将初始化过程通过串口打出来,发现是初始化完毕后启动三个线程后没反应了,我的程序结构如下:

初始化;

int rt_application_init(void)
{
      载入参数;
      初始化三个静态线程;
      rt_thread_startup(&thread1);
      printf("\r\n    启动thread3线程...\r\n");
      rt_thread_startup(&thread2);
   printf("\r\n    启动thread3线程...\r\n");
   rt_thread_startup(&thread3);
   printf("\r\n    启动thread3线程...\r\n");   //不正常时已经运行此命令
   return 0;
}

void thread1_entry(void* parameter)
{
   printf("\r\n    thread1_entry线程 OK\r\n");
        while (1)
        {
            函数处理;
            delay(20);
      }
}

void thread2_entry(void* parameter)
{
   printf("\r\n    thread2_entry线程 OK\r\n");
        while (1)
        {
            函数处理;
            delay(20);
      }
}

void thread3_entry(void* parameter)
{
   printf("\r\n    thread3_entry线程 OK\r\n");
        while (1)
        {
            函数处理;
            delay(20);
      }
}


串接接收数据来看当启动不正常时,已经打印了 printf("\r\n    启动thread3线程...\r\n");而下面三个线程则没有任何输出,应该三个线程没启动,这会是哪方面的问题呢?用JLINK在线仿真时又不出错了,都没法监控呢,郁闷。

ttfaye 发表于 2013-12-6 17:42:53

将rtt中用到的串口的rx口加电阻上拉到Vcc试试

dragonwww 发表于 2013-12-9 10:00:09

ttfaye 发表于 2013-12-6 17:42
将rtt中用到的串口的rx口加电阻上拉到Vcc试试

这个地方还真没注意过,我现在是开了看门狗运行时看不出来了,有空试试你说的这个方法,谢谢了啊!
页: [1]
查看完整版本: STM32F051 + RT Thread 偶尔程序上电不启动呢