硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3268|回复: 4
收起左侧

[开发工具] 切换到使用AC6编译器之后,使用printf死机

[复制链接]

7

主题

18

回帖

39

积分

新手上路

积分
39
发表于 2020-5-6 08:37:26 | 显示全部楼层 |阅读模式
请问一下,在使用STM32CubeMX生成工程之后,在MDK中切换到使用AC6编译器,发现调用printf函数后,程序就无法运行。是有什么需要设置的地方吗?
printf函数实现
int fputc(int ch, FILE *f)
{
        // 采用查询方式发送数据,无限等待
        HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
        return ch;
}

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2020-5-6 08:47:39 | 显示全部楼层
初始化好后,直接如下操作试试。

int fputc(int ch, FILE *f)
{
        /* 写一个字节到USART1 */
        USART1->TDR = ch;
        
        /* 等待发送结束 */
        while((USART1->ISR & USART_ISR_TC) == 0)
        {}
        
        return ch;
}
回复

使用道具 举报

7

主题

18

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2020-5-6 14:18:33 | 显示全部楼层
谢谢硬汉回复,我测试一下。
回复

使用道具 举报

7

主题

18

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2020-5-6 14:36:08 | 显示全部楼层
试了一下,也没有成功。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2020-5-6 14:40:15 | 显示全部楼层
ytqiqiang 发表于 2020-5-6 14:36
试了一下,也没有成功。

单独测试,看看能正常发出数据不,如果不能,你的串口配置就有问题了。

/* 写一个字节到USART1 */
        USART1->TDR = ch;
        
        /* 等待发送结束 */
        while((USART1->ISR & USART_ISR_TC) == 0)
        {}
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 17:00 , Processed in 0.167106 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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