OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5597|回复: 8

求助!! stm32f401re 串口乱码

[复制链接]

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-10-28
在线时间
10 小时
发表于 2017-10-28 17:38:59 | 显示全部楼层 |阅读模式
4金钱
新人求帮助!!

波特率,停止位啥都是一样的,但是收到的是乱码

波特率,停止位啥都是一样的,但是收到的是乱码

最佳答案

查看完整内容[请看2#楼]

不是你程序问题,是你的串口软件上面的 HEX显示选项没勾上,所以出现乱码,勾上就能看到正常数据了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2017-8-1
在线时间
19 小时
发表于 2017-10-28 17:39:00 | 显示全部楼层
不是你程序问题,是你的串口软件上面的 HEX显示选项没勾上,所以出现乱码,勾上就能看到正常数据了
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-10-28
在线时间
10 小时
 楼主| 发表于 2017-10-28 17:43:37 | 显示全部楼层
贴上代码:
void USART1_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
       
        //Ïàó|ê±Öóê1Äü
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);  //ê1ÄüUSART1ê±Öó
        RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB  , ENABLE); //ê1ÄüGPIOBê±Öó
       
        //′®¿ú1¶Ôó|òy½Å¸′óÃó3éä
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_USART1); //GPIOB9¸′óÃÎaUSART1  
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_USART1); //GPIOB10¸′óÃÎaUSART1  
       
        //USART1¶Ë¿úÅäÖÃ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; //TX | RX
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸′óÃ1|Äü
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //Ëù¶è50MHz  
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //íÆíì¸′óÃêä3ö
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOB,&GPIO_InitStructure); //3õê¼»ˉPA9,PA10

        NVIC_Configuration();       
       
        //USART1 3õê¼»ˉéèÖÃ
        USART_InitStructure.USART_BaudRate = 115200; //2¨ìØÂêéèÖÃ
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;  //×Ö3¤Îa8λêy¾Y¸ñê½
        USART_InitStructure.USART_StopBits = USART_StopBits_1;  //ò»¸öí£Ö1λ
        USART_InitStructure.USART_Parity = USART_Parity_No ;  //ÎTÆæÅ¼¼ìÑéλ
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //ÎTó2¼têy¾Yá÷¿ØÖÆ
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  //êÕ·¢Ä£ê½
        USART_Init(USART1, &USART_InitStructure);  //3õê¼»ˉ′®¿ú1
       
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //¿aÆôÏà1ØÖD¶Ï
       
        USART_Cmd(USART1, ENABLE);  //ê1Äü′®¿ú1
}


void NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        /* Configure the NVIC Preemption Priority Bits */  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       
        /* Enable the USARTy Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;          //′®¿ú1ÖD¶Ïí¨μà
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; //ÇàÏèóÅÏè¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;  //×óóÅÏè¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //IRQí¨μàê1Äü
        NVIC_Init(&NVIC_InitStructure);  //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷
}



/*
* oˉêyÃû£ofputc
* Ãèêö  £oÖØ¶¨Ïòc¿aoˉêyprintfμ½USART1
* êäèë  £oÎT
* êä3ö  £oÎT
* μ÷óà £oóéprintfμ÷óÃ
*/
int fputc(int ch, FILE *f)
{
        /* ½&#171rintfÄúèY·¢íù′®¿ú */
        USART_SendData(USART1, (unsigned char) ch);
        /* μè′y·¢Ëííê±Ï */
  while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);      
       
        return (ch);
}

/// ÖØ¶¨Ïòc¿aoˉêyscanfμ½USART1
int fgetc(FILE *f)
{
                /* μè′y′®¿ú1êäèëêy¾Y */
                while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

                return (int)USART_ReceiveData(USART1);
}

int main(void)
{       
        /* USART1 config 115200 8-N-1 */
        USART1_Config();


        printf("\r\n this is a USART Interrupt demo \r\n");

        //delay(0x0FFFEF);

        while (1)
        {
               
        }
}
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-10-28
在线时间
10 小时
 楼主| 发表于 2017-10-28 22:02:45 | 显示全部楼层
滕召群 发表于 2017-10-28 18:23
不是你程序问题,是你的串口软件上面的 HEX显示选项没勾上,所以出现乱码,勾上就能看到正常数据了

勾上看到的是一些类似16进制码吧? 不好处理吧  我用别的板的时候  不勾才能输出我们所要打印的字符串啊
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-10-28
在线时间
10 小时
 楼主| 发表于 2017-10-28 22:04:30 | 显示全部楼层
滕召群 发表于 2017-10-28 18:23
不是你程序问题,是你的串口软件上面的 HEX显示选项没勾上,所以出现乱码,勾上就能看到正常数据了

听说得该库里面的波特率  这个库里面默认晶振值为25MHz,我的板外接晶振是8MHz   ,但是这个stm32f4xx.h是被锁住的    怎么修改?
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-10-28
在线时间
10 小时
 楼主| 发表于 2017-10-28 23:39:33 | 显示全部楼层
已经解决,  结帖!
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-10-28
在线时间
10 小时
 楼主| 发表于 2017-10-28 23:40:44 | 显示全部楼层
其实是波特率出问题哈哈
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-21 09:40:55 | 显示全部楼层
dateher 发表于 2017-10-28 23:40
其实是波特率出问题哈哈

你波特率不是对的吗
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
发表于 2019-2-14 12:34:37 | 显示全部楼层
dateher 发表于 2017-10-28 23:40
其实是波特率出问题哈哈

我也遇到这个问题,请问是怎么解决的
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 19:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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