OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5135|回复: 3

STM32F407移植freertos,使用ADC采样MQ2的烟雾电压值,创建任务列表后只能采集一次然后卡死,想了很久没有想出来求指导!

[复制链接]

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-7-19
在线时间
4 小时
发表于 2022-5-3 23:33:28 | 显示全部楼层 |阅读模式
11金钱
本帖最后由 ZHMS 于 2022-5-3 23:42 编辑



单独运行code_run()没有问题,如果同时运行code_run2中的dth11的值获取也没有问题但是运行,烟雾MQ2值获取就有问题直接卡死。

int main(void)
{
                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
                delay_init(168);                //初始化延时函数
    LED_Init();                     //初始化LED
    uart_init(115200);              //初始化串口
                usart2_init(usart2_baund);//初始化串口2,用于与指纹模块通讯
                PS_StaGPIO_Init();        //初始化FR读状态引脚
                KEY_Init();                                        //按键初始化
                RC522_Init();       //初始化射频卡模块
                button_init();
                W25QXX_Init();
                xTaskCreate((TaskFunction_t        ) start_task,
                                (char*                        ) "start_task",
                                (uint16_t                ) START_STK_SIZE,
                                (void *                 ) NULL,
                                (UBaseType_t        ) START_TASK_PRIO,
                                (TaskHandle_t*        ) &StartTask_Handler);
                vTaskStartScheduler();          //开启任务调度
}

void start_task(void * pvParameters)
{
        //创建Task1
        xTaskCreate((TaskFunction_t        ) task1_task,
                                (char*                        ) "task1_task",
                                (uint16_t                ) TASK1_STK_SIZE,
                                (void *                 ) NULL,
                                (UBaseType_t        ) TASK1_TASK_PRIO,
                                (TaskHandle_t*        ) &Task1Task_Handler);
                                
        //创建Task2
        xTaskCreate((TaskFunction_t        ) task2_task,
                                (char*                        ) "task2_task",
                                (uint16_t                ) TASK1_STK_SIZE,
                                (void *                 ) NULL,
                                (UBaseType_t        ) TASK2_TASK_PRIO,
                                (TaskHandle_t*        ) &Task2Task_Handler);
        vTaskDelete(StartTask_Handler); //NULL
}

void task1_task(void * pvParameters)
{
        shake_hand();
        OLED_Init();  //OLED显示屏初始化                 
        
        while(1)
        {
                code_run();
        }
}

void task2_task(void * pvParameters)
{        
        DHT11_Init();
        Adc_Init();
        
        while(1)
        {
                code_run2();
        }

}


无标题.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-7-19
在线时间
4 小时
 楼主| 发表于 2022-5-3 23:41:47 | 显示全部楼层
本帖最后由 ZHMS 于 2022-5-3 23:44 编辑

C:\Users\ZH\Desktop\无标题.png求指导哇
回复

使用道具 举报

5

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2021-5-26
在线时间
39 小时
发表于 2022-6-16 19:20:51 | 显示全部楼层
adc的采集在哪呢
回复

使用道具 举报

3

主题

805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3832
金钱
3832
注册时间
2017-3-7
在线时间
1671 小时
发表于 2022-6-17 08:08:50 | 显示全部楼层
首先尝试加大任务的stacksize,其次加断点调试,keil,iar一般都能提示crash的函数,一步步分析
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 00:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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