IAR环境下MSP430工程中加入FreeRTOS相关代码后运行printf函数无打印输出的问题 财富值25 语音偷听 邀请guogongjian回答

2021-07-08 17:25发布

如题:

我使用TI公司的MSP430芯片 +IAR环境进行开发。

描述:
未使用FreeRTOS,printf函数正常输出。以下就是我的重定向函数:

int putchar(int ch){
    if (ch == '\n') {
                UCA1TXBUF = 0x0d;
                while (!(UCA1IFG & UCTXIFG));
    }
        
    UCA1TXBUF = ch;
        while (!(UCA1IFG & UCTXIFG));
        
    return (ch);
}

使用FreeRTOS后,printf函数无法打印。
备注1:由于我的printf函数仅在一个任务中使用(仅在该任务中使用printf函数,并且printf重定向所使用的串口也没有用作其它用途),因此我没有对printf函数以及其资源进行资源保护。
备注2:在任务中调用printf函数添加临界区保护也没有任何作用,相关代码如下:


        portENTER_CRITICAL();
        printf("test\r\n");
        portEXIT_CRITICAL();

请各位大神帮忙分析下:为什么printf函数不能打印?不胜感激!


2条回答
feitianxiaozi
1楼 · 2021-07-11 10:25.采纳回答获得作者2.5元分成

任务栈的 size设置的稍微大一些。


chuguimin121
2楼-- · 2021-07-11 17:36

可以尝试直接用串口打印输出,看看行不行

一周热门 更多>