1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、串行通信的通信方式
1.同步通信:带时钟同步信号传输,有一根线是同步时钟。例如SPI(全双功)、IIC(半双工)通信接口 2.异步通信:不带时钟同步信号,必须约定好波特率。例如UART(全双功) 二、STM32的串口通信接口 UART:通用异步收发器。 USART:通用同步异步收发器。 STM32F10x系列包含3个USART和2个UART。 都是TTL电平交叉相连即可 与PC机可以使用USB-TTL进行通信。 三、通信引脚 四、常用串口相关寄存器 1.USART_SR状态寄存器:里面一些相关位可以用来判断是否发送接收完成等。 2.USART_DR数据寄存器:通过读写这个寄存器来发送接收数据 3.USART_BRR波特率寄存器: 波特率计算方法:波特率=fPLCLKX /(16*USARTDIV);USARTDIV=72000000/(115200*16)=39.0625 DIV_Fraction=16*0.0625=1=0X01;(小数部分) DIV_Mantissa=39=0X27;(整数部分) 从而得到USART_BRR波特率寄存器的值为0X0271,这就是115200的波特率对应的寄存器值。 五、串口操作相关库函数 void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); 串口初始化:波特率,数据字长,奇偶校验,硬件控制流以及收发使能。 第一个成员变量是串口标号,第二个成员变量是结构体 typedef struct { uint32_t USART_BaudRate; //波特率 uint16_t USART_WordLength; //位长,8位或9位 uint16_t USART_StopBits; //停止位 uint16_t USART_Parity; //奇偶校验位 uint16_t USART_Mode; //使能输入输出 uint16_t USART_HardwareFlowControl; //硬件流控制 } USART_InitTypeDef; void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState); 使能串口 void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState); 使能相关中断 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); 发送数据到串口 uint16_t USART_ReceiveData(USART_TypeDef* USARTx); 从串口接收数据 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); 获取状态标志位 void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG); 清除状态标志位 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); 获取中断状态标志位 void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT); 清除中断状态标志位 六、串口配置一般步骤 1.串口时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); 2.串口复位(不是必须的) USART_DeInit(); 3.GPIO模式设置 对GPIO口输入输出的设置 4.串口初始化设置 USART_Init(USART1, &USART_InitStructure); 5.开启中断并且初始化NVIC NVIC_Init(); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 6.使能串口 USART_Cmd(USART1, ENABLE); 7.编写中断处理函数 void USART1_IRQHandler(void) 8.串口数据收发 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); uint16_t USART_ReceiveData(USART_TypeDef* USARTx); 9.串口传输状态获取 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT); 七、串口初始化程序编写 void uart_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //GPIOA.9发送GPIO配置 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); //GPIOA.10接收GPIO配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // NVIC 配置(在主函数中需要对NVIC设置分组) NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //对USART配置波特率、停止位、校验位等配置 USART_InitStructure.USART_BaudRate = bound; 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_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能接收中断 USART_Cmd(USART1, ENABLE); //使能串口 } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1817 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1103 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
586浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 19:51 , Processed in 0.480462 second(s), Total 44, Slave 38 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号