网站监测怎么做,烟台福山网站建设,怎么让google收录网站,网站影响seo的标签对于通信接口来说有很多种#xff0c;分为串行接口和并行接口#xff0c;一般是用于数据传输的#xff0c;我们常用的有USART、SPI、I2C、USB、CAN这些#xff0c;今天我们就来聊一聊串口。 串口作为一种广泛应用的通讯接口#xff0c;以其低成本、易用性和简洁的通…对于通信接口来说有很多种分为串行接口和并行接口一般是用于数据传输的我们常用的有USART、SPI、I2C、USB、CAN这些今天我们就来聊一聊串口。串口作为一种广泛应用的通讯接口以其低成本、易用性和简洁的通信线路著称能够实现设备间的双向通信。通过单片机的串口不仅可实现单片机之间的互联还能通过接口芯片实现单片机与电脑、各类模块的通信从而显著扩展单片机的应用领域并大幅提升单片机系统的硬件性能。双向串口通信有两根通信线发送端TX和接收端RX并且TX与RX要交叉连接当只需单向的数据传输时可以只接一根通信线。现在的单片机一般都有不止一个串口我们看一下这次使用的STM32L562的串口分布可以看到这里面就有5个串口有的变为UART有的是USARTUART使用的是异步的通讯方式USART则是在UART的基础上增加了时钟。串口通讯的基本参数·波特率串口通讯的速率·起始位标志一个数据帧的开始且固定是低电平·数据位数据帧的有效载荷1为高电平0为低电平·校验位: 用于数据验证根据数据位计算而来奇偶校验·停止位用于数据帧间隔固定为高电平我们本次要使用的是USART1主要原因如下STlink的接口连接的是PA9和PA10对应的就是USART1这里需要注意默认开启的引脚不是PA9和PA10我们需要找到引脚修改一下串口的默认参数是115200,8位1停止位无校验位咱们可以柑橘需要修改接下来打开DMA和中断我们这里通过串口空闲中断和DMA传输的方式进行接受通过轮询的方式进行发送空闲中断是在一组数据接收完成后产生的也就是说可以接受不定长的数据其他时候不触发中断这个时候可以有效实现系统资源的优化利用。接下来我们看一下软件方面的配置首先是初始化阶段要使能空闲中断复制__HAL_UART_ENABLE_IT(huart1,UART_IT_IDLE);HAL_UARTEx_ReceiveToIdle_DMA(huart1,rx_buffer,200);接下来就是在中断服务函数中处理了复制void USART1_IRQHandler(void){/* USER CODE BEGIN USART1_IRQn 0 */IDLE_flag __HAL_UART_GET_FLAG(huart1,UART_FLAG_IDLE);if((IDLE_flag ! RESET)){__HAL_UART_CLEAR_IDLEFLAG(huart1);HAL_UART_DMAStop(huart1);__HAL_UART_DISABLE_IT(huart1, UART_IT_IDLE);uint16_t rx_length sizeof(rx_buffer) - __HAL_DMA_GET_COUNTER(hdma_usart1_rx);HAL_UART_Transmit(huart1, (uint8_t *)rx_length, 1, 0xFFFF);__HAL_UART_ENABLE_IT(huart1,UART_IT_IDLE);HAL_UARTEx_ReceiveToIdle_DMA(huart1,rx_buffer,200);}/* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(huart1);/* USER CODE BEGIN USART1_IRQn 1 *//* USER CODE END USART1_IRQn 1 */}注意空闲中断没有中断回调函数我们只能在中断中直接处理实现的基本功能是收到不定长的数据后返回长度效果如下---------------------作者Bymyself链接https://bbs.21ic.com/forum.php?modviewthreadtid3440878来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。