STM32 无中断串口代码

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

STM32 无中断串口代码2010-05-14 16:09

串口,是我们日常使用最多的一部分,刚开始做电子工程师的,基本都是从这个开始的,下面的代码是我使用STM32库编写的串口输出和读取的代码。

1、串口初始化函数:void USART_Ini(USART_TypeDef* USARTx,u16 buad)

2、串口中断开启和关闭:USART_IT(USART_TypeDef* USARTx,FunctionalState NewState)

3、串口接收:u16 Getch(USART_TypeDef* USARTx)

4、串口单个字符输出:void Putch(USART_TypeDef* USARTx,u16 ch)

5、串口输出字符串:void PutStr(USART_TypeDef* USARTx,u16 *SendBuf,u16 Length)

#include "stm32f10x_lib.h"

u16 RecDateBuffer[100];

u16 RecLen;

u8 SendDateBuffer[100];

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

* Function Name : Uart_Ini

* Description : 串口初始化

* Input :

* Output : None

* Return :

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

void USART_Ini(USART_TypeDef* USARTx,u16 buad)

{

USART_InitTypeDef USART_InitStructure;

USART_ClockInitTypeDef USART_ClockIni;

GPIO_InitTypeDef GPIO_InitStructure;

/* Configure USART1 Tx (PA.09) as alternate function push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOD, &GPIO_InitStructure);

/* Configure USART1 Rx (PA.10) as input floating */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOD, &GPIO_InitStructure);

USART_ART_BaudRate = 9600; //串口波特率

USART_ART_WordLength = USART_WordLength_8b; //串口数据长度

USART_ART_StopBits = USART_StopBits_1; //串口停止位USART_ART_Parity = USART_Parity_No; //串口奇偶效验位USART_ART_Mode = USART_Mode_Rx|USART_Mode_Tx; //串口模式,开始起发送和接收

USART_ART_HardwareFlowControl =

USART_HardwareFlowControl_None; //串口硬件流

USART_ART_Clock = USART_Clock_Disable;

USART_ART_CPOL = USART_CPOL_Low;

USART_ART_CPHA = USART_CPHA_2Edge;

USART_ART_LastBit = USART_LastBit_Disable;

USART_Init(USARTx,&USART_InitStructure);

USART_ClockInit(USARTx,&USART_ClockIni);

/* Enable USART1 */

USART_Cmd(USARTx, ENABLE); //开启串口X

}

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

* Function Name : Getch

* Description : 串口中断开启或关闭

* Input : USARTx:x=串口号

NewState:ENABLE开启中断,DISABLE关闭中断

* Output : None

* Return :

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

void USART_IT(USART_TypeDef* USARTx,FunctionalState NewState)

{

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

if(NewState==ENABLE)

{

相关文档
最新文档