本帖最后由 拨云人 于 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 函数呢 ?
|