#include "stm32f10x.h"
#include "LED.h"
/************************************************
ALIENTEK 精英STM32F103开发板实验0
工程模板
注意,这是手册中的新建工程章节使用的main文件
技术支持:
www.openedv.com
淘宝店铺:
http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
void usart2_Init(u32 bound)
{
USART_InitTypeDef USART_InitStruct;
GPIO_InitTypeDef GPIO_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIO端口时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能串口2的时钟
USART_InitStruct.USART_BaudRate=bound;
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_InitStruct.USART_Parity=USART_Parity_No;
USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_Init(USART2,&USART_InitStruct);//1.1初始化串口
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;//TX设置为复用推挽输出
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;//RX设置为浮空输入
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);//1.2初始化GPIO引脚
USART_Cmd(USART2,ENABLE);//串口使能
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断
NVIC_InitStruct.NVIC_IRQChannel=USART2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStruct);//初始化优先级设置
}
void USART2_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=0)
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中断标志位
res=USART_ReceiveData(USART2);
USART_SendData(USART2,res);
}
}
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
usart2_Init(115200);
LED_Init();
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
while(1) ;
}
一周热门 更多>