新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32快速學(xué)習(xí)5——串口中斷接收

stm32快速學(xué)習(xí)5——串口中斷接收

作者: 時(shí)間:2016-11-17 來(lái)源:網(wǎng)絡(luò) 收藏
串口自發(fā)自收

設(shè)定串口時(shí)鐘

本文引用地址:http://m.butianyuan.cn/article/201611/315444.htm

設(shè)定引腳功能

中斷優(yōu)先級(jí)

設(shè)定串口

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的庫(kù)不是使用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)

{

/*清楚接收中斷標(biāo)志*/

USART_ClearITPendingBit(USART1,USART_IT_RXNE);

}

}



關(guān)鍵詞: stm32串口中斷接

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉