微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32快速学习5——串口中断接收

stm32快速学习5——串口中断接收

时间:11-17 来源:互联网 点击:
串口自发自收

设定串口时钟

设定引脚功能

中断优先级

设定串口

Main文件

#include"stm32f10x.h"

voidRCC_Configuration(void);

voidGPIO_Configuration(void);

voidUSART_Configuration(void);

voidNVIC_Configuration(void);

intmain(void)

{

RCC_Configuration();

GPIO_Configuration();

NVIC_Configuration();

USART_Configuration();

while(1);

}

voidRCC_Configuration(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);

}

voidGPIO_Configuration(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_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);

}

voidUSART_Configuration(void)

{

USART_InitTypeDefUSART_InitStructure;

USART_InitStructure.USART_BaudRate=115200;

USART_InitStructure.USART_WordLength=USART_WordLength_8b;

USART_InitStructure.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_Tx|USART_Mode_Rx;

USART_Init(USART1,&USART_InitStructure);

USART_Cmd(USART1,ENABLE);

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);/*接收中断使能*/

}

voidNVIC_Configuration(void)

{

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;/*3.4的库不是使用USART1_IRQChannel,看stm32f10x.h吧*/

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

Stm32f10x_it.c加入

voidUSART1_IRQHandler(void)

{

unsignedinti;

if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)

{

i=USART_ReceiveData(USART1);

USART_SendData(USART1,i);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

}

if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)

{

/*清楚接收中断标志*/

USART_ClearITPendingBit(USART1,USART_IT_RXNE);

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top