TA的每日心情 | 开心 昨天 14:44 |
---|
签到天数: 312 天 连续签到: 2 天 [LV.8]以坛为家I
|
使用STM32CubeMAX生成的工程默认是生成AC5版本的,由于AC5版本编译的速度太慢了,我手工切换成AC6版本,这样编辑速度就会快很多。但是printf就需要修改一下,因为官方的示例的代码如下:
如果是这样修改就会一直卡死在printf这里,经查资料,正确的代码如下:
- /* USER CODE BEGIN 1 */
- /* ------------------通过重定向将printf函数映射到串口1上-------------------*/
- #if !defined(__MICROLIB)
- //#pragma import(__use_no_semihosting)
- __asm (".global __use_no_semihosting\n\t");
- void _sys_exit(int x) //避免使用半主机模式
- {
- x = x;
- }
- //__use_no_semihosting was requested, but _ttywrch was
- void _ttywrch(int ch)
- {
- ch = ch;
- }
- //struct __FILE
- //{
- // int handle;
- //};
- FILE __stdout;
- #endif
- #if defined ( __GNUC__ ) && !defined (__clang__)
- #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
- #else
- #include <stdio.h>
- #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
- #endif
- PUTCHAR_PROTOTYPE
- {
- /* 实现串口发送一个字节数据的函数 */
- //serial_write(&serial1, (uint8_t)ch); //发送一个自己的数据到串口
- HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 1000);
- return ch;
- }
- /* USER CODE END 1 */
复制代码 然后就可以使用printf进行重定向打印了:
|
|