嵌入式课程设计 —— STM32串口编程

STM32F407 串口个数:6个串口

串口1:用来输出调试信息

STM32串口2的使用:

1)STM32F407开发板 ----------------- tiny4412开发板 通信

网络串口

2)STM32F407开发板 控制 GPRS模块,STM32F407--- GPRS模块也是通过串口发送的

调试连接图:

嵌入式课程设计 —— STM32串口编程_第1张图片

 改代码:串口1--->串口2

查串口2对应个引脚

发送端口UART2_TX ---- PA2

接收端口UART2_RX ---- PA3

代码:

/*
uart 2 Çý¶¯
*/

#include"sys.h"

//³õʼ»¯IO ´®¿Ú2
//pclk1:PCLK1ʱÖÓƵÂÊ(42Mhz)
//bound:²¨ÌØÂÊ 
void uart2_init(u32 pclk1,u32 bound)
{  	 
	float temp;
	u16 mantissa;
	u16 fraction;	   
	temp=(float)(pclk1*1000000)/(bound*16);//µÃµ½USARTDIV@OVER8=0
	mantissa=temp;				 //µÃµ½ÕûÊý²¿·Ö
	fraction=(temp-mantissa)*16; //µÃµ½Ð¡Êý²¿·Ö@OVER8=0 
    mantissa<<=4;
	mantissa+=fraction; 
	
	RCC->AHB1ENR|=1<<0;   	//ʹÄÜPORTA¿ÚʱÖÓ  
	RCC->APB1ENR|=1<<17;  	//ʹÄÜ´®¿Ú2ʱÖÓ 
	
	//ÉèÖÃPA2 PA3 Ϊ´®¿Ú2 µÄ·¢ËͺͽÓÊÕÒý½Å
	GPIO_Set(GPIOA,PIN2|PIN3,GPIO_MODE_AF,
	         GPIO_OTYPE_PP,GPIO_SPEED_50M,
	         GPIO_PUPD_PU);//PA2,PA3,¸´Óù¦ÄÜ,ÉÏÀ­Êä³ö
 	GPIO_AF_Set(GPIOA,2,7);	//PA2,AF7
	GPIO_AF_Set(GPIOA,3,7);//PA3,AF7  	
	
	//²¨ÌØÂÊÉèÖÃ
 	USART2->BRR=mantissa; 	//²¨ÌØÂÊÉèÖÃ	 
	USART2->CR1&=~(1<<15); 	//ÉèÖÃOVER8=0 
	USART2->CR1|=1<<3;  	//´®¿Ú·¢ËÍʹÄÜ 

	//ʹÄܽÓÊÕÖÐ¶Ï 
	USART2->CR1|=1<<2;  	//´®¿Ú½ÓÊÕʹÄÜ
	USART2->CR1|=1<<5;    	//½ÓÊÕ»º³åÇø·Ç¿ÕÖжÏʹÄÜ	    	
	MY_NVIC_Init(3,3,USART2_IRQn,2);//×é2£¬×îµÍÓÅÏȼ¶ 

	USART2->CR1|=1<<13;  	//´®¿ÚʹÄÜ
}

//´®¿Ú2 ·¢ËÍÒ»¸ö×ֽڵijÌÐò
void Uart2SendByte(u8 ch)
{      
	while((USART2->SR&0X40)==0);//µÚ6λΪ0£¬±íʾ·¢ËÍδÍê³É£»Ñ­»··¢ËÍ,Ö±µ½·¢ËÍÍê±Ï   
	USART2->DR = ch;      

}

//´®¿Ú2 ·¢ËͶà¸ö×ֽڵijÌÐò
void Uart2SendBuf(u8 *buf,int len)
{
	int i = 0;
	for(int i = 0;i < len ; i++)
		Uart2SendByte(buf[i]);
}

//´®¿Ú2 ½ÓÊÕÊý¾Ý£¬Í¨¹ýÖжϷ½Ê½
#define UART2_BUF_LEN 200
u8 Uart2RecvBuf[UART2_BUF_LEN] = {0};
u8 Uart2RecvLen = 0;
void USART2_IRQHandler(void)
{
	if(USART2->SR & (0x1<<5))
	{
		//½ÓÊÕµ½ÁËÊý¾Ý
		Uart2RecvBuf[Uart2RecvLen] = USART2->DR;
		Uart2RecvLen++;
	}
}

嵌入式课程设计 —— STM32串口编程_第2张图片

嵌入式课程设计 —— STM32串口编程_第3张图片

main:

嵌入式课程设计 —— STM32串口编程_第4张图片

结果:

嵌入式课程设计 —— STM32串口编程_第5张图片

嵌入式课程设计 —— STM32串口编程_第6张图片

==============================================================


嵌入式课程设计 —— STM32串口编程_第7张图片

你可能感兴趣的:(嵌入式课程设计 —— STM32串口编程)