野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14087|回复: 3

串口乱码

[复制链接]
发表于 2015-5-6 22:15:49 | 显示全部楼层 |阅读模式
各位高手,最近接触stm32f107vc 这个板子,学习串口通信,模仿火哥教程做例子,可是调试助手收到的是乱码,波特率都检查过了,下面是我的程序,希望各位能帮助一下菜鸟,非常感谢!#include "stm32f10x.h"
#include "bsp.h"

main()
{
        USART1_Config();
        printf("\r\n 欢迎使用野火 iSO-MINI STM32 开发板 \r\n");                       
                for(;;)
                {       
                }  
}

#include "bsp.h"

void USART1_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        USART_InitTypeDef USART_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1, ENABLE);  //
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

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

int fputc(int ch, FILE *f)
{
                /* 发送一个字节数据到USART1 */
                USART_SendData(USART1, (uint8_t) ch);
               
                /* 等待发送完毕 */
                while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
                               
       
                return (ch);
}

int fgetc(FILE *f)
{
                /* 等待串口1输入数据 */
                while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

                return (int)USART_ReceiveData(USART1);
}

QQ图片20150506221007.png
QQ图片20150506221033.png
QQ图片20150506221158.png
回复

使用道具 举报

发表于 2015-5-7 09:18:56 | 显示全部楼层
107的板子用的晶振是8M的吗?如果不一样的晶振,系统时钟不一样会导致串口乱码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 10:06:11 | 显示全部楼层
flyleaf 发表于 2015-5-7 09:18
107的板子用的晶振是8M的吗?如果不一样的晶振,系统时钟不一样会导致串口乱码

是25M,我在main函数里面加入接收函数再打印回串口是正常的。C:\Users\lenovo\Desktop23
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 14:31:22 | 显示全部楼层
flyleaf 发表于 2015-5-7 09:18
107的板子用的晶振是8M的吗?如果不一样的晶振,系统时钟不一样会导致串口乱码

107的板子外部晶振是25M,头文件里面的setsysclockto72(),是不是就不行了?  那该怎么办?  谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 00:29 , Processed in 0.032453 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表