[MM32软件] 【MM32 eMiniBoard测评报告】+ 串口的使用

[复制链接]
 楼主| gaoyang9992006 发表于 2020-4-24 21:58 | 显示全部楼层 |阅读模式
官方的例子总是毛病百出,首先打印出来,接收不连续,本来发送一个字符串,结果这个字符串被拆分成好几段,不知道为何,关键是中间停靠时间较长,观察是在下次发送时候,才发送了上次的后半截。。。很奇特,因为用的官方的库函数,不知道是不是有问题。
然后我重写了例子,发现问题好多了,然而在接收配置中,设置了每次接收后换行,又出问题了。
3333333.png
11111111.png
这是什么问题呢?
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "led.h"


  4. /********************************************************************************************************
  5. **函数信息 :main(void)                       
  6. **功能描述 :
  7. **输入参数 :无
  8. **输出参数 :无
  9. ********************************************************************************************************/
  10. int fputc(int ch, FILE *f)
  11. {      
  12.     while((UART1->CSR&UART_IT_TXIEN)==0);//循环发送,直到发送完毕   
  13.     UART1->TDR = (ch & (uint16_t)0x00FF);      
  14.     return ch;
  15. }


  16. int main(void)
  17. {
  18.         unsigned int x=0;
  19.        
  20.         UART_InitTypeDef UART_Uart1;
  21.         GPIO_InitTypeDef GPIO_InitStructure;
  22.        
  23.         UART_Uart1.UART_BaudRate                                                =115200;
  24.         UART_Uart1.UART_HardwareFlowControl        =UART_HardwareFlowControl_None;
  25.         UART_Uart1.UART_Mode                                                                =UART_Mode_Rx | UART_Mode_Tx;
  26.         UART_Uart1.UART_Parity                                                        =UART_Parity_No;
  27.         UART_Uart1.UART_StopBits                                                =UART_StopBits_1;
  28.         UART_Uart1.UART_WordLength                                        =UART_WordLength_8b;
  29.        
  30.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);        //使能UART1,GPIOA时钟
  31.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //开启GPIOA,GPIOB时钟
  32.         //UART 初始化设置
  33.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
  34.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
  35.        
  36.         UART_DeInit(UART1);
  37.         UART_Init(UART1,&UART_Uart1);
  38.         UART_Cmd(UART1, ENABLE);
  39.        
  40.                 //UART1_TX   GPIOA.9
  41.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  42.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  43.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
  44.         GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
  45.        
  46.         //UART1_RX          GPIOA.10初始化
  47.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  48.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  49.         GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  
  50.        
  51.        
  52.   delay_init();       
  53.         LED_Init();

  54.     while(1)
  55.     {
  56.                         delay_ms(2000);
  57.                         printf("Hello Blink.....%d\n",x++);       
  58.                         LED1_TOGGLE();                       
  59.                 }

  60. }






评论

为什么官网的例程串口没反应,用你的还没反应,修改为串口2还没反应,崩溃中。。。。。。。。  发表于 2020-5-25 16:31
工程与串口软件在5楼  发表于 2020-4-24 22:06
 楼主| gaoyang9992006 发表于 2020-4-24 21:59 | 显示全部楼层
期待MM32官方技术人员给个解释啊。
 楼主| gaoyang9992006 发表于 2020-4-24 22:03 | 显示全部楼层
这个现象也说明一个问题,目前的库函数操作,不能让数据流平稳的输出,输出的每个字符时间间隔都不同导致的观察接收的HEX,每次收到一段后自动换行,发现每次换行的位置都是不同的。
2222222222222222.png
 楼主| gaoyang9992006 发表于 2020-4-24 22:03 | 显示全部楼层
大家一起研究一下,解决这个问题。
 楼主| gaoyang9992006 发表于 2020-4-24 22:06 | 显示全部楼层
serial_lite.zip (12.87 MB, 下载次数: 6)
MM32-UART.zip (463.53 KB, 下载次数: 12)
奉上我的工程与串口软件

评论

用了下,和例程一样的,我的串口输出乱码  发表于 2020-5-25 09:58
 楼主| gaoyang9992006 发表于 2020-4-24 23:05 | 显示全部楼层
我觉得问题可能不在单片机,也不在串口助手
在它板子上的那个调试器
他是用调试器实现了USB转串口适配器
估计它设置的有个缓存大小
或者不够多少的时候不发送。
被暂存了。
等我回去找个串口线再试试。

评论

我觉得分析的在理,我在测试时也出现过明显的断续现象,偶尔会全乱掉(不按回车换行)。  发表于 2020-5-25 16:13
 楼主| gaoyang9992006 发表于 2020-4-24 23:06 | 显示全部楼层
MM32-UART.zip (427.87 KB, 下载次数: 6)
再更新一份,一会儿我回宿舍,用串口线测一下。
WoodData 发表于 2020-4-25 14:24 | 显示全部楼层
你这个最好是用示波器或者逻辑分析仪捕捉一下串口IO看看波形时序,这样就可以分辨出是单片机问题还是USB转串口问题。
heisexingqisi 发表于 2020-4-25 23:07 | 显示全部楼层
下载学习学习。
cainiao518 发表于 2020-4-26 20:42 | 显示全部楼层
这个芯片除了MMLink 下载程序,还有其它方式吗,芯片不能识别了
 楼主| gaoyang9992006 发表于 2020-4-26 22:34 | 显示全部楼层
cainiao518 发表于 2020-4-26 20:42
这个芯片除了MMLink 下载程序,还有其它方式吗,芯片不能识别了

这么容易就坏了?直接Keil下载不了?
cainiao518 发表于 2020-4-27 08:31 | 显示全部楼层
gaoyang9992006 发表于 2020-4-26 22:34
这么容易就坏了?直接Keil下载不了?

下载不了,识别不了芯片
caizhiwei 发表于 2020-4-27 21:34 | 显示全部楼层
就是拿你们当小白鼠的,哈哈,多测测,找bug
 楼主| gaoyang9992006 发表于 2020-4-27 22:08 | 显示全部楼层
caizhiwei 发表于 2020-4-27 21:34
就是拿你们当小白鼠的,哈哈,多测测,找bug

哈哈,差不多吧,毕竟比较新,而且这个库函数貌似写的比较LOW,估计新手作品,对比手册,发现好多小问题。有待优化。
caizhiwei 发表于 2020-4-27 22:22 | 显示全部楼层
gaoyang9992006 发表于 2020-4-27 22:08
哈哈,差不多吧,毕竟比较新,而且这个库函数貌似写的比较LOW,估计新手作品,对比手册,发现好多小问题 ...

https://bbs.21ic.com/icview-2949928-1-1.html
去点评点评~
caizhiwei 发表于 2020-4-27 22:52 | 显示全部楼层
你这个问题引起了我强烈的好奇心!
连夜帮忙测试串口!
发现历程里的uart_printf 是OK的,其他的没来得及测试!
uart_ok.jpg

评论

你这是显示输入提示,冰不是串口输出的  发表于 2020-5-22 17:40
这么测,我的也OK,我是用我的那个串口助手,可以检测是否连续发送的,可以每次接收完一组数据自动插入换行。结果发现,一个字符串被随机断开了。  发表于 2020-4-27 23:49
caizhiwei 发表于 2020-4-29 17:02 | 显示全部楼层
仔细看,确实好像有缓存,发不出去

数据为:c
UART OK!
您输入的

换行乱了!!!

评论

是的,虽然别的厂家芯片也有这情况,但是比这个出现的概率低一些,这个出现概率高一些,每个厂家不同系列都有所不同,还是可以理解。的  发表于 2020-4-29 17:51
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2046

主题

16351

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2046

主题

16351

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部