资源描述:
《stm32串口间通信实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、STM32串口间通信该工程主要实现了两块实验板之间的通信以及接收实验板和PC间的通信,通过发送实验板串口1发送数据,然后由接受实验板串口3接收数据后再又串口1发送出去通过PC查看实验效果。发送串口及子函数配置:#include"sys.h"#include"usart.h"//////////////////////////////////////////////////////////////////////////////////charUSART_TX_BUF[12]={"0123456789
2、r"};//发送缓冲voiduart_init(u32bound){//GPIO端口设置GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;//NVIC_InitTypeDefNVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1
3、RCC_APB2Periph_GPIOA
4、RCC_APB2Periph_AFIO,ENABLE);//US
5、ART1_TXPA.9GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);//USART1_RXPA.10GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure
6、.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);//Usart1NVIC配置//NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;////NVIC_Init
7、Structure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能//NVIC_Init(&NVIC_InitStructure);//根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1//USART初始化设置USART_InitStructure.USART_BaudRate=bound;//一般设置为9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_Init
8、Structure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_Rx
9、USART_Mode_Tx;USART_Init(USART1,&USART_I
10、nitStructure);USART_ITConfig(USART1,USART_IT_TXE,ENABLE);//开启中断USART_Cmd(USART1,ENABLE);//使能串口}voidPut_String(u8*p){while(*p){USART_SendData(USART1,*p++);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){}USART_ClearITPendingBit(USART1,USART_IT_T
11、XE);}}//这些函数很有用所以附上来了voidUart_PutChar(u8ch){USART_SendData(USART1,(u8)ch);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){}USART_ClearITPendingBit(USART1,USART_IT_TXE);//returnch;}voidUart_PutString(u8*buf,u8len){u8i;for