擦鞋匠 发表于 2021-1-21 18:35:05

请教:msp430(iar)工程加入FreeRTOS相关代码后printf函数无法打印。

本帖最后由 擦鞋匠 于 2021-1-21 18:44 编辑

如题:
我使用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函数不能打印?不胜感激!

ronic 发表于 2021-1-21 19:09:25

直接串口输出呢

擦鞋匠 发表于 2021-1-22 08:48:17

ronic 发表于 2021-1-21 19:09
直接串口输出呢

不放在任务中,在OS调度开启之前,pintf函数工作正常(这就类似于未使用OS)。

security 发表于 2021-1-22 09:29:40

任务栈的 size。
页: [1]
查看完整版本: 请教:msp430(iar)工程加入FreeRTOS相关代码后printf函数无法打印。