200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > STM32 printf 重定向 usart3

STM32 printf 重定向 usart3

时间:2021-07-16 11:28:13

相关推荐

STM32 printf 重定向 usart3

jiause

问题描述:

今天调试串口,首先用串口1 printf打印输出,调试成功,在串口1成功的基础上,准备改用串口3 printf结果一直不成功。

串口没有一点反应。

解决过程:

1.时钟问题 : USART1 和 USART3 挂接的时钟不同

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE); //使能USART1,GPIOA时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//使能GPIOB,USART3

2.重定向函数 参考正点原子USART1

//加入代码,支持printf函数。并且不需要选择use MicroLIB#if 1#pragma import(__use_no_semihosting) //标准库需要支持的函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式_sys_exit(int x) { x = x; } //重定义fputc函数int fputc(int ch, FILE *f){while((USART3->SR&0X40)==0);USART3->DR = (u8) ch;return ch;}#endif

3.一般情况下初始化配置没出错,就可以使用printf打印输出了

4.本人在1和2都没有问题的情况下,串口调试助手还没有输出,最后检查发现问题是线接错了

之前一直使用的USAT1,STM32开发板可以使用usb线和PC通信,换成USART3之后就需要使用PB11和PB10与PC通信,USART3与COM3 在开发板上应该是用跳线帽短接的,所以可以通过USB转串口线进行两者之间的通信,或者去掉跳线帽使用USB转TTL直接接上PB11和PB10.

5.实际今天遇到的问题是比较简单的,只是自己疏忽了,写出来提醒一下大家

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。