打印

USART串口如何同时收发数据(在发送同时接收)

[复制链接]
395|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
[C] 纯文本查看 复制代码        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初始化结构体如上,只能单独的接收和发送,不能在发送的同时接收数据,请问是我中断接收函数写的有问题还是需要调用其它库函数?

[C] 纯文本查看 复制代码void USART1_IRQHandler(void)                                                                //串口2中断服务程序
{
        u8 inByte;
        u8 i;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                          //接收中断
        inByte = USART_ReceiveData(USART1);                                                                //读取接收到的数据
    if(inByte!=0x0A)
    {
                        USARTBuff1[USART_RC1]=inByte;
                        USART_RC1++;       
                        if(USART_RC1>99)
                        {
                                USART_RC1 = 0;
                        }                               
    }
    else
    {
                USARTBuff1[USART_RC1]=inByte;        //传输0x0A到队列尾部
                if(USARTBuff1[0]=='S'&&USARTBuff1[1]=='T'&&USARTBuff1[2]=='A'&&USARTBuff1[3]=='R'&&USARTBuff1[4]=='T')
                {
LED_G_TOGGLE;                                                                                  //这个用于检验串口是否在发送的时候接收到了数据,串口不在发送的时候,接收数据灯是会亮的,串口发送的时候无法接收数据,灯不亮
                                }

部分中断接收代码。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

437

主题

437

帖子

0

粉丝