打印
[MM32软件]

【MM32 eMiniBoard测评报告】+ 串口的使用

[复制链接]
1218|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
官方的例子总是毛病百出,首先打印出来,接收不连续,本来发送一个字符串,结果这个字符串被拆分成好几段,不知道为何,关键是中间停靠时间较长,观察是在下次发送时候,才发送了上次的后半截。。。很奇特,因为用的官方的库函数,不知道是不是有问题。
然后我重写了例子,发现问题好多了,然而在接收配置中,设置了每次接收后换行,又出问题了。


这是什么问题呢?
#include "delay.h"
#include "sys.h"
#include "led.h"


/********************************************************************************************************
**函数信息 :main(void)                       
**功能描述 :
**输入参数 :无
**输出参数 :无
********************************************************************************************************/
int fputc(int ch, FILE *f)
{      
    while((UART1->CSR&UART_IT_TXIEN)==0);//循环发送,直到发送完毕   
    UART1->TDR = (ch & (uint16_t)0x00FF);      
    return ch;
}


int main(void)
{
        unsigned int x=0;
       
        UART_InitTypeDef UART_Uart1;
        GPIO_InitTypeDef GPIO_InitStructure;
       
        UART_Uart1.UART_BaudRate                                                =115200;
        UART_Uart1.UART_HardwareFlowControl        =UART_HardwareFlowControl_None;
        UART_Uart1.UART_Mode                                                                =UART_Mode_Rx | UART_Mode_Tx;
        UART_Uart1.UART_Parity                                                        =UART_Parity_No;
        UART_Uart1.UART_StopBits                                                =UART_StopBits_1;
        UART_Uart1.UART_WordLength                                        =UART_WordLength_8b;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);        //使能UART1,GPIOA时钟
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //开启GPIOA,GPIOB时钟
        //UART 初始化设置
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
       
        UART_DeInit(UART1);
        UART_Init(UART1,&UART_Uart1);
        UART_Cmd(UART1, ENABLE);
       
                //UART1_TX   GPIOA.9
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
       
        //UART1_RX          GPIOA.10初始化
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  
       
       
  delay_init();       
        LED_Init();

    while(1)
    {
                        delay_ms(2000);
                        printf("Hello Blink.....%d\n",x++);       
                        LED1_TOGGLE();                       
                }

}






使用特权

评论回复
评论
WAMCNCN 2020-5-25 16:31 回复TA
为什么官网的例程串口没反应,用你的还没反应,修改为串口2还没反应,崩溃中。。。。。。。。 
gaoyang9992006 2020-4-24 22:06 回复TA
工程与串口软件在5楼 
沙发
gaoyang9992006|  楼主 | 2020-4-24 21:59 | 只看该作者
期待MM32官方技术人员给个解释啊。

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2020-4-24 22:03 | 只看该作者
这个现象也说明一个问题,目前的库函数操作,不能让数据流平稳的输出,输出的每个字符时间间隔都不同导致的观察接收的HEX,每次收到一段后自动换行,发现每次换行的位置都是不同的。

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2020-4-24 22:03 | 只看该作者
大家一起研究一下,解决这个问题。

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2020-4-24 22:06 | 只看该作者
serial_lite.zip (12.87 MB)
MM32-UART.zip (463.53 KB)
奉上我的工程与串口软件

使用特权

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

使用特权

评论回复
评论
hu9jj 2020-5-25 16:13 回复TA
我觉得分析的在理,我在测试时也出现过明显的断续现象,偶尔会全乱掉(不按回车换行)。 
7
gaoyang9992006|  楼主 | 2020-4-24 23:06 | 只看该作者
MM32-UART.zip (427.87 KB)
再更新一份,一会儿我回宿舍,用串口线测一下。

使用特权

评论回复
8
WoodData| | 2020-4-25 14:24 | 只看该作者
你这个最好是用示波器或者逻辑分析仪捕捉一下串口IO看看波形时序,这样就可以分辨出是单片机问题还是USB转串口问题。

使用特权

评论回复
9
heisexingqisi| | 2020-4-25 23:07 | 只看该作者
下载学习学习。

使用特权

评论回复
10
cainiao518| | 2020-4-26 20:42 | 只看该作者
这个芯片除了MMLink 下载程序,还有其它方式吗,芯片不能识别了

使用特权

评论回复
11
gaoyang9992006|  楼主 | 2020-4-26 22:34 | 只看该作者
cainiao518 发表于 2020-4-26 20:42
这个芯片除了MMLink 下载程序,还有其它方式吗,芯片不能识别了

这么容易就坏了?直接Keil下载不了?

使用特权

评论回复
12
cainiao518| | 2020-4-27 08:31 | 只看该作者
gaoyang9992006 发表于 2020-4-26 22:34
这么容易就坏了?直接Keil下载不了?

下载不了,识别不了芯片

使用特权

评论回复
13
caizhiwei| | 2020-4-27 21:34 | 只看该作者
就是拿你们当小白鼠的,哈哈,多测测,找bug

使用特权

评论回复
14
gaoyang9992006|  楼主 | 2020-4-27 22:08 | 只看该作者
caizhiwei 发表于 2020-4-27 21:34
就是拿你们当小白鼠的,哈哈,多测测,找bug

哈哈,差不多吧,毕竟比较新,而且这个库函数貌似写的比较LOW,估计新手作品,对比手册,发现好多小问题。有待优化。

使用特权

评论回复
15
caizhiwei| | 2020-4-27 22:22 | 只看该作者
gaoyang9992006 发表于 2020-4-27 22:08
哈哈,差不多吧,毕竟比较新,而且这个库函数貌似写的比较LOW,估计新手作品,对比手册,发现好多小问题 ...

https://bbs.21ic.com/icview-2949928-1-1.html
去点评点评~

使用特权

评论回复
16
caizhiwei| | 2020-4-27 22:52 | 只看该作者
你这个问题引起了我强烈的好奇心!
连夜帮忙测试串口!
发现历程里的uart_printf 是OK的,其他的没来得及测试!

使用特权

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

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

换行乱了!!!

使用特权

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

本版积分规则

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

1984

主题

16026

帖子

211

粉丝