小学生
最后登录1970-1-1
在线时间 小时
注册时间2020-7-3
|
按照火哥教程,书写了程序,在串口发送至电脑端时,有时候老出现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);
}
|
-
|