代码拉取完成,页面将自动刷新
刚拿到一块HiSpark WiFi IoT的开发板,想连上一个没有加密过的AP,SDK版本是HiHope_WiFi-IoT_Hi3861SPC025那版的。
app_main函数的代码如下:
// ******************* customized code area **************************************
// gpio_init();
// app_led_blink();
// ret = hi_wifi_init(APP_INIT_VAP_NUM, APP_INIT_USR_NUM);
// if (ret != HISI_OK) {
// printf("wifi init failed!\n");
// } else {
// printf("wifi init success!\n");
// }
// app_demo_task_release_mem(); /* Task used to release the system stack memory. */
wifi_delay();
printf("start sta!!!\r\n");
hi_wifi_start_sta();
wifi_delay();
wifi_delay();
hi_u32 task_id = 0;
hi_task_attr attr = {0};
attr.stack_size = 0x1000;
attr.task_prio = 11;
attr.task_name = (hi_char*)"wifi_ping_task";
ret = hi_task_create(&task_id, &attr, ping_task, HI_NULL);
if (ret != HI_ERR_SUCCESS) {
printf("Falied to create app_demo_ping task:0x%x\n", ret);
}
上面的代码中hi_wifi_start_sta()这个函数是wifi_sta.c里面的一个函数。这里的线程创建代码用的是本身的demo示例改的,我只是把stack_size加大了点, task_prio降低了些,其它的完全都没有动的。
ping_task这个函数写得比较简单,是这样的:
hi_u32 wifi_ping(hi_void)
{
hi_char *ip = "192.168.1.1";
if (os_shell_ping(1, ip) != LOS_OK) {
return HI_ERR_FAILURE;
}
printf("ping ok!!\r\n");
return HI_ERR_SUCCESS;
}
static hi_void *ping_task(hi_void *param)
{
/* Releases the app_main stack memory. */
hi_unref_param(param);
while (1)
{
wifi_ping();
hi_udelay(1000000);
}
return HI_NULL;
}
搞不明白这里到底是哪有问题。
去掉后面的线程就可以跑,但是不加线程怎么实现多任务了又?
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
还是不行,加了下面这一行代码依然会重启:
while(1){
wifi_ping();
wifi_delay();
}
登录 后才可以发表评论