搜索
bottom↓
回复: 24

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

[复制链接]

出75入8汤圆

发表于 2021-12-14 18:39:14 | 显示全部楼层 |阅读模式
请教坛友,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);
    }
}

出0入8汤圆

发表于 2021-12-14 18:41:07 来自手机 | 显示全部楼层
堆栈深度40改大一点试试看

出75入8汤圆

 楼主| 发表于 2021-12-14 18:43:38 | 显示全部楼层
liwei_jlu 发表于 2021-12-14 18:41
堆栈深度40改大一点试试看

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

出0入17汤圆

发表于 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
    }
}

出75入8汤圆

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

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

出0入17汤圆

发表于 2021-12-14 18:57:38 | 显示全部楼层
整个项目发出来,我个你看看

出280入168汤圆

发表于 2021-12-14 19:01:44 | 显示全部楼层
怎么没 debug 的结果呢?是不是代码死在哪里了?

出0入22汤圆

发表于 2021-12-14 19:33:41 | 显示全部楼层
这东西  单步执行 ,一下就找到问题在哪里了。

出75入8汤圆

 楼主| 发表于 2021-12-15 08:37:45 | 显示全部楼层
zjykwym 发表于 2021-12-14 18:57
整个项目发出来,我个你看看

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出75入8汤圆

 楼主| 发表于 2021-12-15 08:38:28 | 显示全部楼层
chunjiu 发表于 2021-12-14 19:01
怎么没 debug 的结果呢?是不是代码死在哪里了?

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

出75入8汤圆

 楼主| 发表于 2021-12-15 08:39:10 | 显示全部楼层
lixin91985 发表于 2021-12-14 19:33
这东西  单步执行 ,一下就找到问题在哪里了。

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

出280入168汤圆

发表于 2021-12-15 08:51:20 | 显示全部楼层
本帖最后由 chunjiu 于 2021-12-15 08:53 编辑
ZHAOBAO511 发表于 2021-12-15 08:38
任务在执行着,就是IO口受影响了。


兄弟调试程序代码是靠猜的吗?

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

出0入17汤圆

发表于 2021-12-15 09:48:37 | 显示全部楼层
ZHAOBAO511 发表于 2021-12-15 08:37
好的,谢谢,里面带仿真的。

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出75入8汤圆

 楼主| 发表于 2021-12-15 11:46:49 | 显示全部楼层
chunjiu 发表于 2021-12-15 08:51
兄弟调试程序代码是靠猜的吗?  

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

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

出75入8汤圆

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

好的,谢谢,我再看看。

出75入8汤圆

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


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出280入168汤圆

发表于 2021-12-15 11:51:34 来自手机 | 显示全部楼层
ZHAOBAO511 发表于 2021-12-15 11:46
打了断点都没问题,就是IO口给悬空了,百思不得其解。


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

2、不行就换 mcu

出0入17汤圆

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

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

出75入8汤圆

 楼主| 发表于 2021-12-15 16:07:46 | 显示全部楼层
chunjiu 发表于 2021-12-15 11:51
1、断开负载测电平输出状态

2、不行就换 mcu

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

出75入8汤圆

 楼主| 发表于 2021-12-15 16:08:00 | 显示全部楼层
zjykwym 发表于 2021-12-15 15:53
买个开发板吧,别浪费那时间了。。。

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

出0入31汤圆

发表于 2021-12-15 17:54:10 来自手机 | 显示全部楼层
吃不消,原来是PROTEUS仿真,这玩意真的靠谱吗?一直怀疑。

出75入8汤圆

 楼主| 发表于 2021-12-15 18:44:01 | 显示全部楼层
zchong 发表于 2021-12-15 17:54
吃不消,原来是PROTEUS仿真,这玩意真的靠谱吗?一直怀疑。

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

出85入85汤圆

发表于 2021-12-15 20:57:20 来自手机 | 显示全部楼层
ZHAOBAO511 发表于 2021-12-15 11:51
不对,我这个程序就是从VCT6改过来的,就是一启动任务就有问题。 里面有PROTEUS仿真。看端口就是 ...

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

出75入8汤圆

 楼主| 发表于 2021-12-16 08:25:14 | 显示全部楼层
zwhzwh_11 发表于 2021-12-15 20:57
把灯的线删掉,重新画。可能之前有线短路了

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

出75入8汤圆

 楼主| 发表于 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))     //系统所有总的堆大小这里设置有误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 14:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表