ZHAOBAO511 发表于 2021-12-14 18:39:14

请教坛友,FREERTOS一创键任务IO口就虚空是怎么回事?

请教坛友,FREERTOS一创键任务IO口就虚空是怎么回事?灯也不亮,把任务屏蔽掉灯就亮了. 难道任务能影响IO?
void LedTask1(void)
{
    while(1)
    {
                        GPIO_ResetBits(GPIOC, GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12);
          vTaskDelay(1000);   // 睡眠1000ms
    }
}

/**********************************************/
/*                                          */
/*            LED周期性闪烁任务2            */
/*                                          */
/**********************************************/
void LedTask2(void)
{
    while(1)
    {
                        GPIO_ResetBits(GPIOC, GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12);
          vTaskDelay(1000);   // 睡眠1000ms
    }
}


int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);             // 一定要将优先级分组设置分组方式4!!!
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);   // 不使用JTAG调试,对应的IO口作为普通IO口使用
   
    LED_Init();
       
       
   
    /* 创建LED1任务 */
    xTaskCreate((TaskFunction_t)LedTask1,      // 任务函数指针
               "LED_TASK1",   // 任务名称
               40,            // 堆栈深度(字)
               NULL,          // 任务参数为空
               1,             // 任务优先级
               NULL );      // 任务句柄为空
   
    /* 创建LED2任务 */
   xTaskCreate((TaskFunction_t)LedTask2, "LED_TASK2", 40, NULL, 2, NULL );
   
    /* 启动任务调度器(操作系统开始运行) */
    vTaskStartScheduler();
   
    /* 不应该运行到这里 */
    while(1)
    {
                        GPIO_ResetBits(GPIOC, GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12);
    }
}

liwei_jlu 发表于 2021-12-14 18:41:07

堆栈深度40改大一点试试看

ZHAOBAO511 发表于 2021-12-14 18:43:38

liwei_jlu 发表于 2021-12-14 18:41
堆栈深度40改大一点试试看

谢谢,不行,没反应。改成80也不行

zjykwym 发表于 2021-12-14 18:53:42

完全不知道你想干嘛。。。。2个任务都拉低gpio,你先写一个任务。
void LedTask1(void)
{
    while(1)
    {
          GPIO_ResetBits(GPIOC, GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12);
          vTaskDelay(pdMS_TO_TICKS(500));   // 延时500ms
          GPIO_SetBits(GPIOC, GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12);
         vTaskDelay(pdMS_TO_TICKS(500));   // 延时500ms
    }
}

ZHAOBAO511 发表于 2021-12-14 18:56:28

zjykwym 发表于 2021-12-14 18:53
完全不知道你想干嘛。。。。2个任务都拉低gpio,你先写一个任务。
void LedTask1(void)
{


谢谢,刚开始就是这样,一样的结果,不创建任务就会闪,创建任务灯就不亮也不闪。

zjykwym 发表于 2021-12-14 18:57:38

整个项目发出来,我个你看看

chunjiu 发表于 2021-12-14 19:01:44

怎么没 debug 的结果呢?是不是代码死在哪里了?

lixin91985 发表于 2021-12-14 19:33:41

这东西单步执行 ,一下就找到问题在哪里了。

ZHAOBAO511 发表于 2021-12-15 08:37:45

zjykwym 发表于 2021-12-14 18:57
整个项目发出来,我个你看看

好的,谢谢,里面带仿真的。

ZHAOBAO511 发表于 2021-12-15 08:38:28

chunjiu 发表于 2021-12-14 19:01
怎么没 debug 的结果呢?是不是代码死在哪里了?

任务在执行着,就是IO口受影响了。

ZHAOBAO511 发表于 2021-12-15 08:39:10

lixin91985 发表于 2021-12-14 19:33
这东西单步执行 ,一下就找到问题在哪里了。

就是创建任务这里有变化,看不出来哪里问题。

chunjiu 发表于 2021-12-15 08:51:20

本帖最后由 chunjiu 于 2021-12-15 08:53 编辑

ZHAOBAO511 发表于 2021-12-15 08:38
任务在执行着,就是IO口受影响了。

兄弟调试程序代码是靠猜的吗? {:sweat:}

在任务里打个断点看看有没有进去、以及怎么设置 IO 的不就知道了 ...

zjykwym 发表于 2021-12-15 09:48:37

ZHAOBAO511 发表于 2021-12-15 08:37
好的,谢谢,里面带仿真的。

按照昨天我给你写的代码,完全没有问题。下面是我用逻辑分析仪抓的波形。
我用的是stm32f103vct6。

ZHAOBAO511 发表于 2021-12-15 11:46:49

chunjiu 发表于 2021-12-15 08:51
兄弟调试程序代码是靠猜的吗?

在任务里打个断点看看有没有进去、以及怎么设置 IO 的不就知 ...

打了断点都没问题,就是IO口给悬空了,百思不得其解。

ZHAOBAO511 发表于 2021-12-15 11:47:06

zjykwym 发表于 2021-12-15 09:48
按照昨天我给你写的代码,完全没有问题。下面是我用逻辑分析仪抓的波形。
我用的是stm32f103vct6。 ...

好的,谢谢,我再看看。

ZHAOBAO511 发表于 2021-12-15 11:51:10

zjykwym 发表于 2021-12-15 09:48
按照昨天我给你写的代码,完全没有问题。下面是我用逻辑分析仪抓的波形。
我用的是stm32f103vct6。 ...

不对,我这个程序就是从VCT6改过来的,就是一启动任务就有问题。{:lol:} 里面有PROTEUS仿真。看端口就是虚空了,灯不闪。

chunjiu 发表于 2021-12-15 11:51:34

ZHAOBAO511 发表于 2021-12-15 11:46
打了断点都没问题,就是IO口给悬空了,百思不得其解。

1、断开负载测电平输出状态

2、不行就换 mcu

zjykwym 发表于 2021-12-15 15:53:09

ZHAOBAO511 发表于 2021-12-15 11:51
不对,我这个程序就是从VCT6改过来的,就是一启动任务就有问题。 里面有PROTEUS仿真。看端口就是 ...

买个开发板吧,别浪费那时间了。。。

ZHAOBAO511 发表于 2021-12-15 16:07:46

chunjiu 发表于 2021-12-15 11:51
1、断开负载测电平输出状态

2、不行就换 mcu

断不断都是一样,暂时不换。

ZHAOBAO511 发表于 2021-12-15 16:08:00

zjykwym 发表于 2021-12-15 15:53
买个开发板吧,别浪费那时间了。。。

好的,我再研究研究,谢谢

zchong 发表于 2021-12-15 17:54:10

吃不消,原来是PROTEUS仿真,这玩意真的靠谱吗?一直怀疑。

ZHAOBAO511 发表于 2021-12-15 18:44:01

zchong 发表于 2021-12-15 17:54
吃不消,原来是PROTEUS仿真,这玩意真的靠谱吗?一直怀疑。

99%是对的,别小看这个,当您想学点东西的时侯很有用,桌面摆的太多领导一眼就看出您在学习,万一这时侯他不想让您学习的时侯就有用了。

zwhzwh_11 发表于 2021-12-15 20:57:20

ZHAOBAO511 发表于 2021-12-15 11:51
不对,我这个程序就是从VCT6改过来的,就是一启动任务就有问题。 里面有PROTEUS仿真。看端口就是 ...

把灯的线删掉,重新画。可能之前有线短路了

ZHAOBAO511 发表于 2021-12-16 08:25:14

zwhzwh_11 发表于 2021-12-15 20:57
把灯的线删掉,重新画。可能之前有线短路了

谢谢,整个OS就没正式启动,虽然单步可以走。

ZHAOBAO511 发表于 2023-5-27 11:32:42

本帖最后由 ZHAOBAO511 于 2023-5-27 14:06 编辑

ZHAOBAO511 发表于 2021-12-16 08:25
谢谢,整个OS就没正式启动,虽然单步可以走。
(引用自24楼)

可以用的。#define configTOTAL_HEAP_SIZE                                        ((size_t)(4*1024))   //系统所有总的堆大小这里设置有误

页: [1]
查看完整版本: 请教坛友,FREERTOS一创键任务IO口就虚空是怎么回事?