野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16504|回复: 2

求助个串口调试的问题,

[复制链接]
发表于 2020-7-3 18:41:05 | 显示全部楼层 |阅读模式
按照火哥教程,书写了程序,在串口发送至电脑端时,有时候老出现FF,然后是自己的字符,在字符串的时候前面出现空格,刚才不知道改了啥了,程序下发后竟然出不来FF了, 只截图了一个出现空格的样子
#include "bsp_usart.h"



void NVIC_InitConfig(void)
{
        NVIC_InitTypeDef NVIC_InitStruct;
               
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;       
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
       
  NVIC_Init(&NVIC_InitStruct);
       
}


void USART_InitConfig(void)
{
        //设置usart1端口,PA9是TX,PA10是Rx,开启时钟和端口使能
       
        GPIO_InitTypeDef GPIO_InitStruct;
        USART_InitTypeDef USART_InitStruct;
       
        //TX设置为复合模式推挽输出,频率50M,开启时钟和端口初始化
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
       
        //打开串口USART时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
         GPIO_Init(GPIOA,&GPIO_InitStruct);
       
        //RX设置为复合模式推挽输出,频率50M,开启时钟和端口初始化       
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA,&GPIO_InitStruct);
       
       
       
        //USART初始化
        USART_InitStruct.USART_BaudRate=115200;
        USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
        USART_InitStruct.USART_Parity=USART_Parity_No;
        USART_InitStruct.USART_StopBits=USART_StopBits_1;
        USART_InitStruct.USART_WordLength=USART_WordLength_8b;
        USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
       
        USART_Init(USART1,&USART_InitStruct);
         
         NVIC_InitConfig();
         
         // 使能串口接收中断
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);       
         
         //串口使能
        USART_Cmd(USART1, ENABLE);
               
}


void USART_SendByte(USART_TypeDef* USARTx, uint8_t Data)
{
                USART_SendData(USART1,Data);
       
                while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
               
}


void USART_SendHalfWord(USART_TypeDef* USARTx, uint16_t Data)
{
        uint8_t temp_h,temp_l;
        temp_h=((Data&0xFF00)>>8);
        temp_l=Data&0X00FF;
        USART_SendData(USART1,temp_h);
        while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
        USART_SendData(USART1,temp_l);
        while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
}

void USART_SendArray(USART_TypeDef* USARTx, uint8_t* array,uint16_t num)
{
        uint16_t i=0;
        for(;i<num;i++)
        {
                USART_SendByte(USARTx, array[i]);
        }
        while( USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}


void USART_SendChar(USART_TypeDef* USARTx, char data)
{
        USART_SendData(USART1,data);
       
        while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
}

void USART_SendString(USART_TypeDef* USARTx, char* str)
{
       
        do
        {
                USART_SendByte(USARTx, *str++);
               
        } while(!(*str=='\0'));
       
        while( USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}




无标题.png
回复

使用道具 举报

 楼主| 发表于 2020-7-4 09:10:48 来自手机 | 显示全部楼层
有学习的同学吗?回答下疑问
回复 支持 反对

使用道具 举报

发表于 2020-7-4 18:03:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 15:30 , Processed in 0.050556 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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