打印
[STM32F4]

STM32F4 Discovery 串口在打印乱码?

[复制链接]
2366|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 dawei360 于 2014-3-9 14:15 编辑

  自己有个MAX232 +DB9 直接用USART2 打印输出,出现乱码, 目前怀疑是由于STLINK 占用了USART1 导致,不知道大神们遇到过这种问题没有?

代码如下:
初始化:
void  MyUartInit(void )
{
        GPIO_InitTypeDef  UartGpio;           
        USART_InitTypeDef  MyUSARTInit;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);  //´®¿ÚʱÖÓʹÄÜ
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD ,ENABLE);  //GPIOD¿ÚʱÖÓʹÄÜ
       
         
        UartGpio.GPIO_Pin = GPIO_Pin_5 ;                  //USART_TX
        UartGpio.GPIO_Mode = GPIO_Mode_OUT;
        UartGpio.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &UartGpio);               


        UartGpio.GPIO_Pin =GPIO_Pin_6;     //USART_RX
        UartGpio.GPIO_Mode = GPIO_Mode_IN;
        GPIO_Init(GPIOD, &UartGpio);
       
       

        MyUSARTInit.USART_BaudRate = 115200;                                                                       
        MyUSARTInit.USART_WordLength = USART_WordLength_8b;
        MyUSARTInit.USART_StopBits = USART_StopBits_1;                       
        MyUSARTInit.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;  
        MyUSARTInit.USART_HardwareFlowControl = USART_HardwareFlowControl_None;          
        MyUSARTInit.USART_Parity = USART_Parity_No;         
       
       
        USART_Init(USART2, &MyUSARTInit);                       
        USART_Cmd(USART2, ENABLE);                                               
       
}

重定义输出函数:

int fputc(int ch, FILE *f)                        //???????
{
        USART_SendData(USART2, (uint16_t)ch);
          while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
        return (ch);
}


int fgetc(FILE *f)
{
               
                while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET);

                return (int)USART_ReceiveData(USART2);
}

测试函数:
void UartTest(void )
{
        printf("\rhelloworld\n");
}

测试效果:

乱码

我目前试试下载完成后改用3.3V直接供电,串口,不用STLINK(还在尝试)。
大神们有什么建议,拍板吧



沙发
一清如水| | 2014-3-9 14:42 | 只看该作者
GPIO_PinAFConfig()没看到这个复用的关联函数的调用,难道我记错了

使用特权

评论回复
板凳
dawei360|  楼主 | 2014-3-9 18:04 | 只看该作者
一清如水 发表于 2014-3-9 14:42
GPIO_PinAFConfig()没看到这个复用的关联函数的调用,难道我记错了

不用吧,M4 上要写复用么,我其实已经指定了,发送和接受口,M3上是不用的

使用特权

评论回复
地板
dawei360|  楼主 | 2014-3-9 22:55 | 只看该作者
一清如水 发表于 2014-3-9 14:42
GPIO_PinAFConfig()没看到这个复用的关联函数的调用,难道我记错了

谢谢,M4和M3的区别啊,就是这个函数,哈哈,谢谢

使用特权

评论回复
5
一清如水| | 2014-3-9 23:04 | 只看该作者
dawei360 发表于 2014-3-9 22:55
谢谢,M4和M3的区别啊,就是这个函数,哈哈,谢谢

F1 与 F4还是有不少区别的,F2与F4很相似

使用特权

评论回复
6
dawei360|  楼主 | 2014-3-10 22:27 | 只看该作者
一清如水 发表于 2014-3-9 23:04
F1 与 F4还是有不少区别的,F2与F4很相似

嗯,我去找找F2的资料

使用特权

评论回复
7
dickdick117| | 2014-3-21 19:32 | 只看该作者
stlink 会占用串口吗?  目测有个 TX RX是空 连排针都焊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

736

帖子

5

粉丝