野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8343|回复: 2

麻烦问一下,串口收发数据哪里有问题,串口调试助手只有发送乱码,急

[复制链接]
发表于 2017-11-21 23:08:10 | 显示全部楼层 |阅读模式
#include"stm32f10x.h"
#include"string.h"
//#include"stm32f10x_it.h"

                void RCC_Config();
                void GPIO_Config();
                void USART_Config();
                void NVIC_Config();
                //void Tx_string(u8*str);

                //u8 buffer[]="nihao";
                 u8 Txdata[100]={0xaa, 0x55 ,0x77 ,0x9a ,0x76 ,0x79 ,0x88};
                 u8 length;
                 u8 i;
                int main(void)
                {
                       
                        RCC_Config();
                        GPIO_Config();
                       
                        NVIC_Config();
                        USART_Config();
                        //Tx_string(buffer);
                       
                       
                         length=strlen(Txdata);
                         
                         while(length--){
                                 if (USART_GetITStatus(USART2, USART_IT_TXE) == SET)
                                        {
                USART_ClearITPendingBit(USART2,USART_IT_TXE);
                                                                USART_SendData(USART2,Txdata[i++]);
                                                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC )==1);
                                       
                                        }
                                }
                        while (1);         //μè′yÖD¶Ï
               

                       
                }
               
        /*        void  Tx_string(u8*str)
                {
      u8 i;
                        u8 long;
                        long=strlen(buffer);
                       
                        for(i=0;i<long;i++)
                        {
                                USART_SendData(USART2,*str++);
               
                               

                       
                       
                        //while((USART2->SR&0X40)==0);//&#209;-&#187;··¢&#203;í,&#214;±μ&#189;·¢&#203;ííê±&#207;   
            //USART2->DR = *str++;
                       
                                GPIO_SetBits(GPIOB,GPIO_Pin_9);
                        }
                }*/

                void   RCC_Config()
                {
                                //RCC_TypeDef RCC_InitStructure;
                                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);     //ê1&#196;üLED4/5
                               
                                RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
                          GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
                                RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);   

                }
               
                void  GPIO_Config()
                {
                                        GPIO_InitTypeDef    GPIO_InitStructure;
                       
                                        //&#197;&#228;&#214;&#195;LED->D4/D5
                                        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_8;
                                        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
                                        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;         //&#197;&#228;&#214;&#195;í&#198;íìê&#228;3&#246;
                                        GPIO_Init(GPIOB,&GPIO_InitStructure);
                       
                                        //&#197;&#228;&#214;&#195;TX
                                        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
                                        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
                                        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;         //&#197;&#228;&#214;&#195;í&#198;íìê&#228;3&#246;
                                        GPIO_Init(GPIOB,&GPIO_InitStructure);
                       
                                        //&#197;&#228;&#214;&#195;RX
                                        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
                                        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;         //&#197;&#228;&#214;&#195;&#184;&#161;&#191;&#213;ê&#228;è&#235;
                                        GPIO_Init(GPIOB,&GPIO_InitStructure);
               
                                       
                }
                void NVIC_Config()
                {
                               
                                NVIC_InitTypeDef  NVIC_InitStructure;
                                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
                                //°′&#188;ü1&#214;D&#182;&#207;&#197;&#228;&#214;&#195;KEY1->PA0
                                NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
                                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
                                NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
                                NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
                                NVIC_Init(&NVIC_InitStructure);
                                       

                        }
                       
               
                void USART_Config()
                {
               
                                USART_InitTypeDef   USART_InitStructure;
                               
                                USART_InitStructure.USART_BaudRate=9600;
                                USART_InitStructure.USART_WordLength=USART_WordLength_8b;
                                USART_InitStructure.USART_StopBits=USART_StopBits_1;
                                USART_InitStructure.USART_Parity=USART_Parity_No;
                                USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
                                USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
                               
                                USART_Init(USART1,&USART_InitStructure);
                                USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
                                USART_Cmd(USART1,ENABLE);                      //&#207;èê1&#196;ü′&#174;&#191;ú&#187;1ê&#199;&#207;è′ò&#191;a&#214;D&#182;&#207;£&#191;
               
                }
               
       
                 
               
                        void  USART_IRQHandle()
                        {
                                  u8 Rxdata[100];
                                  u8  data,flag;
                                       
                                        if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)
                                        {
                                                 USART_ClearITPendingBit(USART2, USART_IT_RXNE);
             Rxdata[data++]=USART_ReceiveData(USART2);
                                                 GPIO_SetBits(GPIOB,GPIO_Pin_9);
                                               
                                                 if(flag==1)      //μú&#182;t′&#206;&#189;óêüêy&#190;Yμ&#198;áá
                                                 {
                                                         
                                                         if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)
                                                                 
                                                                        {
                                                                                         USART_ClearITPendingBit(USART2, USART_IT_RXNE);
                                                                                         Rxdata[data++]=USART_ReceiveData(USART2);
                                                                                         GPIO_ResetBits(GPIOB,GPIO_Pin_9);

                                                                                }
                                            }
                                       
                               flag++;
                                        }
                       

                                }                       


回复

使用道具 举报

发表于 2017-11-22 09:06:12 | 显示全部楼层
发送了什么乱码?确认一下收发双方的波特率,要一致
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-22 21:33:30 | 显示全部楼层
大佬帮忙看看程序有没问题啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 21:57 , Processed in 0.027548 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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