串口助手无显示或一直显示问号

以下的问题和测试我用的是stm32f407zgt6(不知道是哪个家的板子,某多野板)的板子。串口用的是usb转串口(ch340g/ch340c)

一.串口助手无显示一般是串口接错线了(认真检查,因为我刚学还不会的时候也是找不到没显示的原因,最后发现是接错线了)。要注意的是串口四根线(3v3,tx,rx,GND)都要相应连接到板上。同时串口和stlink(我用的是这个如果是其他下载器的也一样)都要插到电脑上。8581af6e457c4d1da715eb730bc06f8e.png

 二.如上图所显示,写一段向串口助手发送'A'的程序,但是串口助手一直显示问号。

1.先试试第一种情况能不能解决,因为板子不兼容的问题,我们需要在你写的串口通信的.c文件下写入几行代码。

d84f60b8fae5410bb4977d473ea04c0f.png

 (为了方便大家解决问题以下是图片上的代码)

#if 1

 #pragma import(__use_no_semihosting)             

 //标准库需要的支持函数                 

 struct __FILE 

 { 

  int handle; 

  /* Whatever you require here. If the only file you are using is */ 

  /* standard output using printf() for debugging, no file handling */ 

  /* is required. */ 

 }; 

 /* FILE is typedef’ d in stdio.h. */ 

 FILE __stdout;       

 //定义_sys_exit()以避免使用半主机模式    

 int _sys_exit(int x) 

 { 

  x = x; 

 } 

 //重定义fputc函数 

 int fputc(int ch, FILE *f)

 {      

  while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   

  USART1->DR = (u8) ch;      

  return ch;

 }

 #endif 

2.假如上面添加这段代码后还是无法解决,我们可以继续找到system_stm32f4xx.c在370行向下看可以看见有很多的不同型号板子的系统时钟设置

cc999bf258c2472f83855a92559c3e27.png

如果是stm32f40_41xxx系列的就在其systemcoreclock=168000000的下面一行重新写入一行新的(如图第372行)

#define PLL_M     8

定义完后重新编译后下载进板子就正常了

(可能有人会说重新定义的第372行有warning,这个是不影响的,不必在意)(野板都会有比较多的问题,在里是系统时钟和外设时钟不一致会出现这种问题)

(这也是我自己学的时候遇到的问题)(希望能帮到大家)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值