完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
串口设置的一般步骤:
串口是挂载在APB2下面的外设,所以使能函数如下: RCC_APB2PeriphClockCmd(RCC_APB2Perip_USART1); 串口复位: void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); __注:__第一个参数入口是指定初始化的串口标号;第二个参数入口是一个USART_InitTypeDef类型的结构体指针,该结构体指针变量用来设置一些参数。一般实现格式如下: 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寄存器 数据发送函数: void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); 读取接收到数据的函数: uint16_t USART_ReceiveData(USART_TypeDef* USARTx); 串口状态: 串口状态可以通过状态寄存器USART_SR读取 读取串口状态的函数是: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); 注: 第二个入口参数表示要查看串口的哪种状态 判断读寄存器是否非空(RXNE): USART_GetFlagStatus(USART1, USART_FLAG_RXNE); 判断发送是否完成(TC): USART_GetFlagStatus(USART1, USART_FLAG_TC); 标识的宏定义: #define USART_IT_PE ((uint16_t)0x0028) #define USART_IT_TXE ((uint16_t)0x0727) #define USART_IT_TC ((uint16_t)0x0626) #define USART_IT_RXNE ((uint16_t)0x0525) #define USART_IT_IDLE ((uint16_t)0x0424) #define USART_IT_LBD ((uint16_t)0x0846) #define USART_IT_CTS ((uint16_t)0x096A) #define USART_IT_ERR ((uint16_t)0x0060) #define USART_IT_ORE ((uint16_t)0x0360) #define USART_IT_NE ((uint16_t)0x0260) #define USART_IT_FE ((uint16_t)0x0160) 串口使能: USART_Cmd(USART1, ENABLE); 开启串口响应中断: 使能串口中断的函数是: void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState) 注: 该函数第二个参数入口是表示使能串口的类型,即使能哪种中断。例如在接收数据的时候开启中断的方法是: USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断,接收到数据中断 在发送数据结束要产生中断的方法是: USART_ITConfig(USART1, USART_IT_TC, ENABLE); 获取相应的状态: 判断中断的类型使用的函数是: ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT) 判断到底是否是串口发送完成中断方法是: USART_GetITStatus(USART1, USART_IT_TC) 返回值是SET,说明串口发送完成中断发生。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 10:36 , Processed in 0.801815 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号