嵌入式STM32学习——串口USART 2.0(串口发送数据)

实现串口发送

库函数实现串口发送

串口USART结构体:
 typedef struct
 {
 uint32_t USART_BaudRate;           
uint16_t USART_WordLength;         
uint16_t USART_StopBits;             
uint16_t USART_Parity;            
uint16_t USART_Mode;                
uint16_t USART_HardwareFlowControl; 
} USART_InitTypeDef;
串口USART相关库函数:
void USART_DeInit(USART_TypeDef* USARTx);
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* 
USART_InitStruct);
 void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
 void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* 
USART_ClockInitStruct);
 void USART_ClockStructInit(USART_ClockInitTypeDef* 
USART_ClockInitStruct);
 void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
 void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, 
FunctionalState NewState);
 void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, 
FunctionalState NewState);
 void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
 void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);
 void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState 
NewState);
 void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t 
USART_LINBreakDetectLength);
 void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
 uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
 void USART_SendBreak(USART_TypeDef* USARTx);
 void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t 
USART_GuardTime);
 void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t 
USART_Prescaler);
 void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState 
NewState);
 void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState 
NewState);
 void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState 
NewState);
 void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState 
NewState);
 void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState 
NewState);
 void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);
 void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t 
USART_FLAG);
 void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
 void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t 
USART_IT);

软件流程设计

        初始化系统

                初始化GPIO、串口外设时钟

                初始化串口引脚

                初始化串口外设

        串口发送

实验代码:(用单片机给发出a)

usart.h

#ifndef USART_H_
#define USART_H_



void my_usart_init(void);

#endif

usart.c

#include"stm32f10x.h"
#include"usart.h"

void my_usart_init(void)
{
	GPIO_InitTypeDef GPIOInitstruct;
	USART_InitTypeDef Usart_initstruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
	
	//A9
	GPIOInitstruct.GPIO_Pin = GPIO_Pin_9;
	GPIOInitstruct.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIOInitstruct.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOA,&GPIOInitstruct);
	//A10
	GPIOInitstruct.GPIO_Pin =GPIO_Pin_10;
	GPIOInitstruct.GPIO_Mode =GPIO_Mode_IPU;
	GPIO_Init(GPIOA,&GPIOInitstruct);
	
	//A10
	Usart_initstruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
	Usart_initstruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	Usart_initstruct.USART_BaudRate = 115200;
	Usart_initstruct.USART_Parity = USART_Parity_No;
	Usart_initstruct.USART_StopBits = USART_StopBits_1;
	Usart_initstruct.USART_WordLength = USART_WordLength_8b;
	USART_Init(USART1,&Usart_initstruct);
	USART_Cmd(USART1,ENABLE);	//使能串口外设																							
}

main.c

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "shake.h"
#include "usart.h"
void delay(uint16_t time) 
{
	uint16_t i=0;
	while(time--)
	{
		i =12000;
		while(i--);
	}

}
 
int  main()
{
	
	my_usart_init();
	
	
	while(1)
	{
		 USART_SendData(USART1,'a');        //向串口发送a
	}		
}

实验结果

嵌入式STM32学习——串口USART 2.0(串口发送数据)_第1张图片

字符串和字符的输出

嵌入式STM32学习——串口USART 2.1(串口发送字符串和字符)-CSDN博客

printf函数发送

嵌入式STM32学习——串口USART 2.0(printf重定义及串口发送)-CSDN博客

串口中断接收(串口发送数据,stm32再返回输入)

嵌入式STM32学习——串口USART 2.2(串口中断接收)-CSDN博客

你可能感兴趣的:(嵌入式STM32学习,stm32,学习,单片机)