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相关推荐

  1. STM32 - Printf重定向使用微库、不使用微库(Keil) (转载)

    Stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: 1.使用微库(平台式keil-MDK),点击&quo ...

  2. Stm32 - Printf重定向(不)使用微库(Keil MDK)

    #define DEBUG_USART USART1 stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: ...

  3. STM32使用printf重定向到USART(串口)并打印数据到串口助手

    STM32使用sprintf打印数据到串口助手 一.背景知识 二. 重定向printf到USART1 三.使用printf打印hello,world到串口助手 3.1 usart.c 3.2 usar ...

  4. stm32中如何进行printf重定向用于串口调试输出

    1 在main中包含stdio.h 文件 2 Target选项框里选Use MicroLib 选项 3 在main中添加UART1_Configuration()初始化的代码 Uart1初始化, vo ...

  5. c语言输入输出重定向到串口,关于printf重定向到串口的问题分析 - 全文

    关于printf重定向到串口的问题 简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosTIng(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口 ...

  6. fputc函数重写实现printf重定向

    一,printf重定向原理 1,自己重写C的库函数 链接器检查到用户编写了与C库函数相同名字的函数时,优先调用用户编写函数,这样就可实现重定向 2,重定向printf()函数 需重写fputc()这个 ...

  7. STC15单片机-串口打印printf重定向

    printf函数重定向为往串口打印信息 在UART.h.UART1.h和UART.c文件的内容编写好后,在main函数中实现通过串口发送一串字符串和一个不断加1的变量 方法一: 使用sprintf函数 ...

  8. 汇总|C++常见知识点总结,涉及文本输出、排序、生成随机数、异常处理、关联容器、printf重定向、sprintf用法、cout重定向

    文章目录 一 将程序运行结果输出到txt文本文件中 二 排序算法 三 生成随机数 四 异常处理 六 关于GitHub上zip与tar.gz的区别 七 容器中查找最大值所在的位置 八 C++中关联容器的 ...

  9. keil5 stm32f03c8t6 printf重定向到串口和TFT 1.44 LCD屏

    效果 keil5工程设置,这一步很重要: 在任意的源文件里重写int fputc(int ch, FILE* f)函数 代码: print.h #ifndef __PRINT_H__ #define ...

最新文章

  1. 翻译关于ViewController的一篇文章
  2. 图标和文字跟着div比例放大缩小_Word文档页面显示比例与单页多页,文本的输入、修改、删除与插入...
  3. 康托展开与八数码问题
  4. Vue计算属性、方法、侦听器
  5. ICCV 2019 | 旷视研究院提出文字检测新方法:像素聚合网络PAN
  6. STM32驱动LCD实战
  7. MySQL Workbench Failed to Connect to MySQL at 127.0.0.1:3306 with user root Bad handshake
  8. matlab 矩阵矢量化编程
  9. python爬虫什么意思-python爬虫可以爬什么
  10. 2022牛客寒假算法基础集训营3 签到题7题(附基础集训营1-3签到题总结)
  11. 回溯法——设计一个算法在1、2、3... 9(顺序不能变)数字之间插入+ 或 - 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性和全排列
  12. RDD,DataFrame与DataSet区别
  13. 2021年湖南长沙市优势产业发展分析-文化产业、工程机械产业、旅游产业[图]
  14. 科普 | 实景三维模型和地形三维模型 时空克隆 三维视频融合 投影融合 点卯-魔镜系列
  15. 如何预防电脑辐射(转自j2medev)
  16. 支付宝InfoStr怎么获取
  17. Hackintosh_guide黑苹果
  18. 酷派大神F1移动版刷机教程卡刷教程
  19. Vue父传子详细教程
  20. oracle树结构统计,Oracle树形统计--子节点汇总到父节点

热门文章

  1. vite实现md转vue
  2. 怎样制作Mac启动U盘
  3. 集成电路IC IMD
  4. 从0开始学心电信号处理(2)——心电信号的预处理
  5. 史上最详细全中文 Cisco 3560交换机使用手册
  6. 浙江省赛 C What Kind of Friends Are You?
  7. 手游《奔跑吧?骚年!》技术分享(一):开篇
  8. 日系小清新PPT模板
  9. 免费分享一套详细的Java面试视频
  10. windows mobile中区分cmwap或cmnet接入点