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.实际今天遇到的问题是比较简单的,只是自己疏忽了,写出来提醒一下大家
STM32 printf 重定向 usart3相关推荐
- STM32 - Printf重定向使用微库、不使用微库(Keil) (转载)
Stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: 1.使用微库(平台式keil-MDK),点击&quo ...
- Stm32 - Printf重定向(不)使用微库(Keil MDK)
#define DEBUG_USART USART1 stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: ...
- STM32使用printf重定向到USART(串口)并打印数据到串口助手
STM32使用sprintf打印数据到串口助手 一.背景知识 二. 重定向printf到USART1 三.使用printf打印hello,world到串口助手 3.1 usart.c 3.2 usar ...
- stm32中如何进行printf重定向用于串口调试输出
1 在main中包含stdio.h 文件 2 Target选项框里选Use MicroLib 选项 3 在main中添加UART1_Configuration()初始化的代码 Uart1初始化, vo ...
- c语言输入输出重定向到串口,关于printf重定向到串口的问题分析 - 全文
关于printf重定向到串口的问题 简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosTIng(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口 ...
- fputc函数重写实现printf重定向
一,printf重定向原理 1,自己重写C的库函数 链接器检查到用户编写了与C库函数相同名字的函数时,优先调用用户编写函数,这样就可实现重定向 2,重定向printf()函数 需重写fputc()这个 ...
- STC15单片机-串口打印printf重定向
printf函数重定向为往串口打印信息 在UART.h.UART1.h和UART.c文件的内容编写好后,在main函数中实现通过串口发送一串字符串和一个不断加1的变量 方法一: 使用sprintf函数 ...
- 汇总|C++常见知识点总结,涉及文本输出、排序、生成随机数、异常处理、关联容器、printf重定向、sprintf用法、cout重定向
文章目录 一 将程序运行结果输出到txt文本文件中 二 排序算法 三 生成随机数 四 异常处理 六 关于GitHub上zip与tar.gz的区别 七 容器中查找最大值所在的位置 八 C++中关联容器的 ...
- keil5 stm32f03c8t6 printf重定向到串口和TFT 1.44 LCD屏
效果 keil5工程设置,这一步很重要: 在任意的源文件里重写int fputc(int ch, FILE* f)函数 代码: print.h #ifndef __PRINT_H__ #define ...
最新文章
- 翻译关于ViewController的一篇文章
- 图标和文字跟着div比例放大缩小_Word文档页面显示比例与单页多页,文本的输入、修改、删除与插入...
- 康托展开与八数码问题
- Vue计算属性、方法、侦听器
- ICCV 2019 | 旷视研究院提出文字检测新方法:像素聚合网络PAN
- STM32驱动LCD实战
- MySQL Workbench Failed to Connect to MySQL at 127.0.0.1:3306 with user root Bad handshake
- matlab 矩阵矢量化编程
- python爬虫什么意思-python爬虫可以爬什么
- 2022牛客寒假算法基础集训营3 签到题7题(附基础集训营1-3签到题总结)
- 回溯法——设计一个算法在1、2、3... 9(顺序不能变)数字之间插入+ 或 - 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性和全排列
- RDD,DataFrame与DataSet区别
- 2021年湖南长沙市优势产业发展分析-文化产业、工程机械产业、旅游产业[图]
- 科普 | 实景三维模型和地形三维模型 时空克隆 三维视频融合 投影融合 点卯-魔镜系列
- 如何预防电脑辐射(转自j2medev)
- 支付宝InfoStr怎么获取
- Hackintosh_guide黑苹果
- 酷派大神F1移动版刷机教程卡刷教程
- Vue父传子详细教程
- oracle树结构统计,Oracle树形统计--子节点汇总到父节点