首页 > 其他分享 >CH32V307 串口

CH32V307 串口

时间:2023-07-14 14:46:41浏览次数:48  
标签:Index RxBuffer USART RX CH32V307 串口 USART1

由于官方的link(USB转串口模块)和板子都设置了防反二极管,使用时串联为2倍的二极管压降,导致串口下载不成功:
下载时需要移除TX_0、RX_0的跳线帽。
经过验证,涉及到使用USART1时也需要移除,否则串口调试助手会无法回显数据

"""
void USART1_IRQHandler(void)
{
uint8_t RxBuffer;

/* 如果发生了接收中断 */
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                   //接收数据寄存器不为空中断
{

    while(1){
        RxBuffer = USART_ReceiveData(USART1);                           //库函数方式读取【接收到的1个字节】;

        while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);    //等待上次发送结束
        USART_SendData(USART1, RxBuffer);                               //发送数据

        if(USART1_RX_Index >= USART_RX_MAX)
            USART1_RX_Index = 0;                                        //防止下标越界

        if(RxBuffer != '#')
            USART1_RX_Buffer[USART1_RX_Index++] = RxBuffer;
        else if(RxBuffer == '#')
        {
            USART1_RX_Buffer[USART1_RX_Index++] = RxBuffer;
            USART1_RX_OverFlag = 1;                                     //模式定义完成,设置:接收完成标志位,置1
            break;
        }
    }
  
}

/* 清除接收中断标志位,可选,读DR自动清除*/
USART_ClearFlag(USART1, USART_FLAG_RXNE);

/*检测到空闲线路中断*/
if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)
{
    USART1_RX_OverFlag = 1;                                             //数据帧结束标志位,置1
    USART_ReceiveData(USART1);                                          //读取DR,清除中断标志位
}

}

"""

标签:Index,RxBuffer,USART,RX,CH32V307,串口,USART1
From: https://www.cnblogs.com/zlib/p/17553655.html

相关文章

  • 松灵机器人TRACER 串口操作
    松灵机器人TRACER串口操作命令5AA50A55010201000000000062//低八位转向左5AA50A550102000000900000F1//高八位向右5AA50A5501020000A000000001低八位向左5AA50A550102000000A0000001//高八位转数向右5AA50A550102000090000000F1//低位向右5AA50A5501020000FFAF0......
  • java串口通信
    java串口通信importjava.io.*;importjava.util.*;importgnu.io.*;publicclassSerialTestimplementsSerialPortEventListener{SerialPortserialPort;//串口名称privatestaticfinalStringPORT_NAME="/dev/ttyUSB0";//波特率priv......
  • 注塑机数据采集(海天、住友、发那科、力劲、伊之密、恩格尔、泰瑞、佳明、双马、宁波通
    注塑机企业比较关注机实时状态、工艺参数(温度压力)、机器生产效率、设备能耗,运行时间、设备温度压力参数、以及各类工艺参数先上采集图,下面将技术拆解通讯模式(非应答模式)  文章以海天注塑机为列海天系列主要用弘讯控制器为主,弘讯TECH系列(如580、1s、2s、530)、弘讯AK系列......
  • [STM32]STM32双机串口通信
    [STM32]STM32双机串口通信上一篇的通信方案在发送端高强度通信下寄了,发现是函数HAL_UART_Transmit()的锅,一个函数居然能跑0.3s左右。。。于是打算选用DMA收发数据,但是DMA在接收数据时遇到一些玄学问题,于是改用DMA发送数据,串口IDLE中断接收数据的策略。cubeMX配置接收端部分开......
  • [STM32 HAL]一种可能不错的DMA处理串口数据方案
    [STM32HAL]一种可能不错的DMA处理数据方案原文链接:https://blog.csdn.net/youmeichifan/article/details/51750435?spm=1001.2014.3001.5506本文配置稍有不同,大体类似。MX配置开启USART1,使能USART1全局中断,打开RX,TX的DMA通道,均为normal模式,内存地址自增,使能TX对应DMA的中断,RX......
  • [STM32]STM32双机蓝牙串口通信
    [STM32]STM32双机蓝牙串口通信期末考完力,虽然GPA--,但也终于有空搓一搓32了蓝牙模块配置我们先配置蓝牙模块,需要主从兼容,配置过程可以参考这个博客:https://blog.csdn.net/m0_59113542/article/details/122028037?spm=1001.2014.3001.5506cubeMX配置然后就是MX里的配置。PS:两......
  • [Raspberry Pi]树莓派多线程下串口收发数据
    [RaspberryPi]树莓派多线程下串口收发数据鼠鼠用的是python开发树莓派,因为python是最优美的语言!少废话,直接上代码:importthreadingimportserialimportcv2ser=serial.Serial("/dev/ttyAMA0",115200)ser.timeout=5ifnotser.isOpen:ser.open()#打开串口......
  • 使用STM32的usb虚拟串口CDC_Transmit_FS打印freertos的任务列表vTaskList
    创建一个任务,打印信息后,把自己删除/*USERCODEENDHeader_func_showSysInfo*/voidfunc_showSysInfo(voidconst*argument){/*USERCODEBEGINfunc_showSysInfo*//*Infiniteloop*/for(;;){osDelay(1000);chartaskList[200];......
  • RV1126调试-修改默认调试串口
    背景RK系列的SDK给的默认的调试串口都是uart2/1500000波特率,本次调试设备已经把console调试口改为了uart0,所以需要修改下uboot和内核,然后把波特率设为常用的115200。注:本次调试的SDK版本为原厂的V2.2版本1.uboot修改1)修改rv1126-evb.dts和rv1126-u-boot.dtsi把uart2改成uart......
  • QT 记串口的用法
    QSerialPort用法一、在.pro文件添加serialportQT+=coreguiserialport二、头文件#include<QSerialPort>#include<QSerialPortInfo>三、开启串口1voidWidget::on_pushButton_clicked()//自己写的按钮为例2{3QSerialPortInfoinfo;4QLis......