OpenEdv-开源电子网

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

一个串口问题的小疑问???

[复制链接]

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1501
金钱
1501
注册时间
2021-8-10
在线时间
273 小时
发表于 2022-2-7 10:48:35 | 显示全部楼层 |阅读模式
5金钱
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
//#include "lcd.h"
#include "FreeRTOS.h"
#include "task.h"
/************************************************
ALIENTEK Mini STM32F103 开发板 FreeRTOS实验6-1
FreeRTOS任务创建和删除(动态方法)-库函数版本
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/

//任务优先级
#define START_TASK_PRIO                1
//任务堆栈大小       
#define START_STK_SIZE                 128  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);

//任务优先级
#define TASK1_TASK_PRIO                2
//任务堆栈大小       
#define TASK1_STK_SIZE                 128  
//任务句柄
TaskHandle_t Task1Task_Handler;
//任务函数
void task1_task(void *pvParameters);

//任务优先级
#define TASK2_TASK_PRIO                3
//任务堆栈大小       
#define TASK2_STK_SIZE                 200
//任务句柄
TaskHandle_t Task2Task_Handler;
//任务函数
void task2_task(void *pvParameters);

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4         
        delay_init();                                            //延时函数初始化         
        uart_init(115200);                                        //初始化串口
        LED_Init();                                                          //初始化LED
        //创建开始任务
    xTaskCreate((TaskFunction_t )start_task,            //任务函数
                (const 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)
{
    taskENTER_CRITICAL();           //进入临界区
    //创建TASK1任务
//   xTaskCreate((TaskFunction_t )task1_task,            
//               (const 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,     
                (const char*    )"task2_task",   
                (uint16_t       )TASK2_STK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )TASK2_TASK_PRIO,
                (TaskHandle_t*  )&Task2Task_Handler);
    vTaskDelete(StartTask_Handler); //删除开始任务
    taskEXIT_CRITICAL();            //退出临界区
}

//task1任务函数
// task1_task(void *pvParameters)
//{
//        u8 task1_num=0;
//        while(1)
//        {
//                task1_num++;        //任务执1行次数加1 注意task1_num1加到255的时候会清零!!
//                printf("任务1已经执行:%d\r\n",task1_num);
//        vTaskDelay(1000);                           //延时1s,也就是1000个时钟节拍       
//        }
//}

//task2任务函数
void task2_task(void *pvParameters)
{
        static u8 task2_num=0;       
        while(1)
        {
                task2_num++;        //任务2执行次数加1 注意task1_num2加到255的时候会清零!!
                printf("任务2已经执行:%d\r\n",task2_num);
        vTaskDelay(1000);                           //延时1s,也就是1000个时钟节拍       
        }
}
为啥串口输出会出现这种现象,我把另一个任务的输出已经注释掉了,还是会出现这种情况,第一次遇见不知道该如何解决,请教一下各位。

openedv.PNG

最佳答案

查看完整内容[请看2#楼]

换个串口软件试试,这个串口软件显示有时候会乱码,不一定是程序问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
679
金钱
679
注册时间
2020-11-21
在线时间
67 小时
发表于 2022-2-7 10:48:36 | 显示全部楼层
换个串口软件试试,这个串口软件显示有时候会乱码,不一定是程序问题。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 04:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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