集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1097|回复: 1

串口的设置

[复制链接]
fpga_feixiang 发表于 2019-5-3 14:18:37 | 显示全部楼层 |阅读模式
//串口的设置

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说明是串口发送完成中断
---------------------
zxopenhl 发表于 2019-5-3 16:23:29 | 显示全部楼层
串口的设置
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-30 21:39 , Processed in 0.057742 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表