STM32串口通讯程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

将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

*******************************************************************************/

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 ------------------------------------------------------*/

/* USART1 configured as follow:

- BaudRate = 115200 baud

- Word Length = 8 Bits

- One Stop Bit

相关文档
最新文档