STM32串口通讯程序
STM32串口通讯程序
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(STM32串口通讯程序)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为STM32串口通讯程序的全部内容。
STM32串口通讯程序
将AVR上的队列串口驱动程序修改后,运行在STM32开发板,采用中断方式接收和中断发送,并加入了缓冲收发队列操作。由于该驱动是用来操作西门子的TC35或MC55等通信模块,所以加入了“等待串口接收完成”函数,该函数需要一个10ms的定时进行计数累加。 #define SMS_UART0_c /*
**********************************************
*************************************************************** *
* STM32 UART1 driver *
* File : UART0.c * By : hjjft
************************************************************************************************************* */
/////////////////////////////////////////////////
// 这里将串口1写作0,主要原因是AVR是串口0,为了方便移植,这里仍然称为串口0 // ///////////////////////////////////////////////// static char UART0_RxBuf[UART0_RX_BUFFER_SIZE]; static volatile unsigned char UART0_RxHead;// static volatile unsigned char UART0_RxTail;
static char UART0_TxBuf[UART0_TX_BUFFER_SIZE];// static volatile unsigned char UART0_TxHead; static volatile unsigned char UART0_TxTail;
//---———-—-———-——-—————--————————————-———--—-————----—--———-—-
static volatile unsigned char Frame_counting;
/******************************************************************************* * Function Name : NVIC_Configuration
* Description : Configures Vector Table base location。 * Input : None * Output : None * Return : None
STM32串口通讯程序
*******************************************************************************/ void NVIC_USART_Configuration(void) {
NVIC_InitTypeDef NVIC_InitStructure; /* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel; // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure。NVIC_IRQChannelSubPriority = 10; // NVIC_InitStructure。NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
void GPIO_USART_Configuration(void) {
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure。GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure。GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART1 Rx (PA。10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure。GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); }
/******************************************************************************* * Function Name : USART_Configuration
* Description : Configures the USART1. * Input : None * Output : None * Return : None
*******************************************************************************/ void USART_Configuration(unsigned long baudrate) {
USART_InitTypeDef USART_InitStructure;
USART_ClockInitTypeDef USART_ClockInitqlt;
/* USART1 configuration -—---—---——————————-——————---