首页 > 其他分享 >STM32发送串口数据丢失字节的解决办法

STM32发送串口数据丢失字节的解决办法

时间:2024-03-20 13:58:17浏览次数:31  
标签:WriteBit EN u8 USART STM32 串口 GPIO USART3 字节

发送数据函数

void Usart3_Send_Array(u8 *buf, u8 len)
{
    u8 t;
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,1);
    for(t = 0; t < len; t++)		//循环发送数据
    {
        while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
        USART_SendData(USART3, buf[t]);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
    } 
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,0); 
}

或者

void Usart3_Send_Array(u8 *buf, u8 len)
{
    u8 t;
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,1);
    USART3->SR;
    for(t = 0; t < len; t++)		//循环发送数据
    {
        USART_SendData(USART3, buf[t]);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
    } 
    GPIO_WriteBit(GPIOB,RS485AB_EN_PIN,0); 
}

标签:WriteBit,EN,u8,USART,STM32,串口,GPIO,USART3,字节
From: https://www.cnblogs.com/huameixiao/p/18085027

相关文章

  • 学习STM32第八天
    TIM基础1、TIM编码器接口通过定时器的编码器接口进行自动计次,之前的编码器计次是通过触发外部中断然后在中断函数中进行计次,当测量的是高速旋转的电机时,则每秒会产生成千上万个中断,程序会频繁进入中断但是中断所完成的任务又仅仅是简单的加一减一,极大地浪费软件资源。使用......
  • 03-【K210】通用串口和高速串口
    目录null01串口通讯协议简介02K210的串口类型(1)高速UART(2)通用UART03通用UART测试例程04高速串口测试例程01串口通讯协议简介串口通讯(SerialCommunication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常......
  • 02_STM32软件+硬件SPI读写W25Q64(HAL库)
    目录1、SPI简介2、SPI时序单元2.1模式0(应用最多)2.2模式12.3 模式22.4 模式33、SPI移位示意图4、简单软件SPI代码(HAL库)5、简单硬件SPI读写W25Q64(HAL库)6、例程下载1、SPI简介2、SPI时序单元2.1模式0(应用最多)2.2模式12.3 模式2模式2与模式0类似,区别在......
  • FPGA之串口接收数据(看注释)
    兜兜转转看了好多家视频和好几本书,明白了FPGA难学的原因之一是因为讲的好(我觉得就是很详细,告诉你为什么这么来写代码)的视频比较少,之前看到的那本书其实也很好,只是没有说为什么这么写,以及某些步骤的用意,这次看了野火的视频,发现挺符合我的需求,他们视频和我借的那本书思路是相同的,野......
  • STM32_LVGL移植流程及注意事项
    STM32——LVGL移植流程及注意事项下载源码(lvgl8.2):点击git下载.源码精简lvgl-8.2​|build:使用Cmake工具编译的相关文件​|demos:lvgl官方的测试demos​|docs:lvgl文档​......
  • ModbusTCP转Profinet网关高低字节交换切换
    ModbusTCP转Profinet网关高低字节交换切换背景:在现场设备与设备通迅之间通常涉及到从一种字节序(大端或小端)转换到另一种字节序。大端字节序是指高位字节存储在高地址处,而小端字节序是指低位字节存储在低地址处。在不动原有程序而又不想或不能添加程序下可选用ModbusTCP转Profinet......
  • stm32库函数_小知识
    stm32库函数值计算#definePOSITION_VAL(VAL)(__CLZ(__RBIT(VAL)))在STM32中的作用是计算指定值VAL在二进制表示中最高位的位置。这里使用了一些内置的CMSIS函数,包括__RBIT(反转位顺序)和__CLZ(计算前导零位数)。解释:__RBIT(VAL):反转VAL的位顺序。例如,如果VAL的二进......
  • STM32工具使用--J-Flash烧录程序
            最近客户那边需要给他们烧程序,他们需要把板子给寄给我,我烧写好之后又发回去,这样一来一回就浪费不少时间,而且也比较麻烦,所以最近给它们出了一个如何烧写.hex程序文件的步骤,这样以后就不用再麻烦自己给他们烧写了,他们根据教程就能完成。    我使用的是P......
  • 微信小程序蓝牙红外发送ArrayBuffer合并字节数组
    微信小程序中与设备进行通讯时,经常需要在前面加一些字节,或者处理分包的时候需要加一些字节过去,如果在后端很好操作,但是在小程序中由于ArrayBuffer不支持直接操作,非常不方便最近一个与设备通讯中,需要添加前导字符,百度了一圈没有好的方案,东拼西凑了才算是搞出来了 functioncop......
  • STM32 TIM3 定时器应用之数码管显示定时时间
     实现目标1、STM32基于HAL库定时器的使用;2、加强数码管的学习。一、定时器概述?1、生活中哪些场景会用到定时器?2、STM32F1定时器二、原理图设计三、STM32CubeMX配置1.定时器时钟配置2.定时器3、数码管、蜂鸣器的配置  3.开启定时器3中断四、程序......