本帖最后由 拨云人 于 2015-5-5 11:43 编辑
之前用的ST官方外设库来开发时,使用 printf 没有问题,但是转到 stm32cube 上就出问题了呢,我的步骤是这样的:
1. 使用 STM32Cube_FW_F0_V1.x.x 自动生成了一段初始化 UART 的MDK 工程。
2. 在 main.c 文件中 添加如下代码(已省却注释):
#include "stdio.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/* Private variables ---------------------------------------------------------*/
UART_HandleTypeDef huart1;
/* Buffer used for transmission */
uint8_t aTxBuffer[] = "send by HAL_UART_Transmit() ";
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t*)ch, 1, 0xFFFF);
return ch;
}
3. 然后在主函数中使用 printf(“hello...\n”) 发现打印出来的错误.
4. 直接使用 HAL_UART_Transmit(&huart1 , (uint8_t *)&aTxBuffer, sizeof(aTxBuffer), 0xFFFF); 打印正确.
请问有没有人遇到过这样的情况,使用STM32Cube的时候该如何才能使用 printf 函数呢 ?
|