请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3220S-LAUNCHXL 主题中讨论的其他器件:CC3220S
您好!
我使用的是 WiFi_Doorlock 示例的基本代码。 我有一个 BTN 中断,如下所示,每当它发生时,程序就会在执行 httpTask()时冻结。 我已经测试了 httpTask()本身的工作正常。 如何解决此问题?
void gpioButtonFxn0 (uint_least8_t index) { /*清除 GPIO 中断并切换 LED */ GPIO_clearInt (Board_GPIO_Button1); GPIO_TOGGLE (Board_GPIO_LED0); httpTask(); }//* === mainThread ==== */ void *BTNTask (void *arg0) { /*调用驱动程序初始化函数*/ //GPIO_init(); /*配置 LED 和按钮引脚*/ GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); GPIO_setConfig (Board_GPIO_Button1、GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_INT_RISING); /*打开用户 LED */ GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON); /*安装按钮回调*/ GPIO_setCallback (Board_GPIO_Button1、gpioButtonFxn0); /*启用中断*/ GPIO_enableInt (Board_GPIO_Button1); 返回(NULL); }
这里也是我创建 BTNTask 的方式。
extern void *BTTask (void *arg0); static Int32_t BTN_start () { int32_t retc = 0; #if (BTN = 1) /*线程创建变量*/ pthread_attr_t pAttrs; struct sched_param primParam; pthread_attr_init (&pAttrs); priParam.sched_priority = 1; retc = pthread_attr_setschedparam (&pAttrs、&priParam); retc |= pthread_attr_setstacksize (&pAttrs、1024); retc |= pthread_attr_setdetachstate (&pAttrs、pthread_create_detached); #ifdef debug_print 如果(retc < 0) { display_printf ( 显示屏、 0、 0、 "\t [Main Thread] Error - Unable to configure BTN thread parameters"); } #endif retc = pthread_create (&g_BTN_thread、&pAttrs、BTTask、NULL); #endif 返回 retc; }