串口的设置

来源:互联网 发布:12345打字软件下载 编辑:程序博客网 时间:2024/06/05 18:47

//串口的设置

1.串口使能,GPIO时钟使能

2.串口复位
3.GPIO端口模式设置
4.串口参数初始化
5.开启中断并且初始化NVIC(如果需要开启中断)
6.使能串口

7.编写中断处理函数


//串口时钟使能(APB2)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);
//串口复位
void USART_DeInit(USART_TypeDef* USARTx);
//串口参数初始化
void USART_Init(USART_TypeDef* USARTx,USART_InitTypeDef* USART_InitStruct);


//实现格式


1.波特率  2.字长  3.停止位  4.奇偶校验位  5.硬件数据控制  6.模式


USART_InitStructure.USART_BaudRate=bound;                                         //波特率
USART_InitStructure.USART_WordLength=USART_WordLength_8b;   //字长为8位数据格式
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_Rx|USART_Mode_Tx;     //收发模式
USART_Init(USART1,&USART_InitStructure);                                        //初始化


//数据发送与接收(USART_DR包括TDR和RDR)
发送数据:void USART_SendData(USART_TypeDef* USARTx,uint16_t Date);
读出数据:uint16_t USART_ReceiveData(USART_TypeDef* USARTx);


//串口状态(USART_SR)


RXNE(读数据寄存器非空),置1表示数据接收到,读取,清零
TC(发送完成)


  读取串口状态的函数
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx,uint16_t USART_FLAG);
1.判断寄存器是否为非空
USART_GetFlagStatus(USART1,USART_FLAG_RXNE);           //USART_FLAG_RXNE是(uint16_t)0x0525   //typedefint int16_t; typedefunsigned int uint16_t;
2.判断发送是否完成
USART_GetFlagStatus(USARTI,USART_FLAG_TC);                 //USART_FLAG_TC是(uint16_t)0x0727
//串口使能
USART_Cmd(USART1,ENABLE);


//开启串口响应中断
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);    //接收到数据的时候就中断
USART_ITCinfig(USART1,USART_IT_TC,ENABLE);          //发送数据结束的时候产生中断


//获取相应中断状态
USART_GetITStatus(USART1,USART_IT_TC);                //返回值是set说明是串口发送完成中断
原创粉丝点击