[问答]HiSpark WiFi IoT运行简单的代码不断的重启

阅读量0
0
1


刚刚把LiteOS Studio在windows上装好。下载了润和官方的HiHope_WiFi-IoT_Hi3861SPC025 SDK下的代码,板子是可以跑的,一点问题也没有,不会出现重启的现像。

我在用户入口函数只加上下面的这些,也好像没有问题:
  1. wifi_delay();
  2.     printf("start sta!!!rn");
  3.     hi_wifi_start_sta();
  4.     wifi_delay();
  5.     wifi_delay();
复制代码

但是如果我随便创建一个线程就跑一会就重启。
跑完这些个语句我再while(1);让单片机死循环也不行,也会无限重启。

还有,比方说我在上面的代码前面加上这两行:
  1. gpio_init();
  2. app_led_blink();
复制代码
就会重启,
上面的函数的实现部分是这样的:
  1. //************* LED part *************************
  2. hi_void gpio_init(hi_void)
  3. {
  4.     /* Take gpio 0 as an example */
  5.     hi_u32 ret;
  6.     // hi_gpio_value gpio_val = HI_GPIO_VALUE1;

  7.     ret = hi_gpio_init();
  8.     if (ret != HI_ERR_SUCCESS) {
  9.         printf("===== ERROR ===== gpio -> hi_gpio_init ret:%drn", ret);
  10.         return;
  11.     }
  12.     printf("----- gpio init success-----rn");

  13.     // ret = hi_io_set_func(HI_IO_NAME_GPIO_9, HI_IO_FUNC_GPIO_0_GPIO);
  14.     // if (ret != HI_ERR_SUCCESS) {
  15.     //     printf("===== ERROR ===== gpio -> hi_io_set_func ret:%drn", ret);
  16.     //     return;
  17.     // }
  18.     // printf("----- io set func success-----rn");

  19.     ret = hi_gpio_set_dir(HI_GPIO_IDX_9, HI_GPIO_DIR_OUT);
  20.     if (ret != HI_ERR_SUCCESS) {
  21.         printf("===== ERROR ===== gpio -> hi_gpio_set_dir1 ret:%drn", ret);
  22.         return;
  23.     }
  24.     printf("----- gpio set dir success! -----rn");
  25.     return;
  26. }

  27. static hi_void *led_toggole(hi_void *param)
  28. {
  29.     /* Releases the app_main stack memory. */
  30.     hi_unref_param(param);
  31.     while (1)
  32.     {
  33.         hi_gpio_set_ouput_val(HI_GPIO_IDX_9, 1);
  34.         hi_udelay(1000000);
  35.         hi_gpio_set_ouput_val(HI_GPIO_IDX_9, 0);
  36.         hi_udelay(1000000);
  37.     }
  38.     return HI_NULL;
  39. }

  40. hi_void app_led_blink(hi_void)
  41. {
  42.     /* Releases the app_main stack memory. */
  43.     hi_u32 task_id = 5;
  44.     hi_task_attr attr = {0};
  45.     attr.stack_size = 0x1000;
  46.     attr.task_prio = 0x04;
  47.     attr.task_name = (hi_char*)"app_led_blink";
  48.     hi_u32 ret = hi_task_create(&task_id, &attr, led_toggole, HI_NULL);
  49.     if (ret != HI_ERR_SUCCESS) {
  50.         printf("Falied to create app_led_blink task:0x%xn", ret);
  51.     }
  52.     return;
  53. }
复制代码
stack_size从0x400到0x1000试过都不行。

注释掉这些,程序的最后创建一个不断Ping的线程也不行:
  1. hi_u32 task_id = 0;
  2.     hi_task_attr attr = {0};
  3.     attr.stack_size = 0x1000;
  4.     attr.task_prio = 11;
  5.     attr.task_name = (hi_char*)"wifi_ping_task";
  6.     ret = hi_task_create(&task_id, &attr, ping_task, HI_NULL);
  7.     if (ret != HI_ERR_SUCCESS) {
  8.         printf("Falied to create app_demo_ping task:0x%xn", ret);
  9.     }
复制代码


整个的app_main.c文件上传的,麻烦有经验的大神帮忙看看,先谢谢了。


app_main.rar
(7.07 KB, 下载次数: 3)

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友