野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12669|回复: 6

F1的串口问题

[复制链接]
发表于 2016-12-27 18:52:12 | 显示全部楼层 |阅读模式
问题描述:想用F1的开发板的usart2串口发射数据,另一块一模一样的F1开发板接收数据
现在问题是调用发送数据的函数,usart的DR寄存器的值赋不进去
     函数声明   :   uart_tx_bytes(( uint8_t *)pYaojunji, 8 );  
     函数实现    :
           void uart_tx_bytes( uint8_t* TxBuffer, uint8_t Length )
           {
             while( Length-- )
            {
               
                 while( RESET == USART_GetFlagStatus( USART2, USART_FLAG_TXE ))
                {
                  USART2->DR = *TxBuffer;  //DR一直不能被赋值,找不到原因
                  TxBuffer++;
                }
       
            }
           }

回复

使用道具 举报

发表于 2016-12-27 20:21:25 | 显示全部楼层
发送完成后要检查标志等待,参考例程
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 09:17:10 | 显示全部楼层
flyleaf 发表于 2016-12-27 20:21
发送完成后要检查标志等待,参考例程

代码参考的是模块的驱动代码。。。不知道什么原因;想了好久了
回复 支持 反对

使用道具 举报

发表于 2016-12-28 09:29:26 | 显示全部楼层
yaojunjie 发表于 2016-12-28 09:17
代码参考的是模块的驱动代码。。。不知道什么原因;想了好久了

向DR赋值之后要用while循环检查啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 11:27:00 | 显示全部楼层
flyleaf 发表于 2016-12-28 09:29
向DR赋值之后要用while循环检查啊

  while(TxCounter < TxBufferSize)
                  {
   //                    /* Send one byte from USARTy to USARTz */
        USART_SendData(USART2, TxBuffer[TxCounter++]);
   //                      /* Loop until USARTy DR register is empty */
           
                          while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
        
               }
我参考例程这样写也发不出去
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 11:30:04 | 显示全部楼层
flyleaf 发表于 2016-12-28 09:29
向DR赋值之后要用while循环检查啊

野火的教程都是用中断写的,请问串口发送数据一定要使用中断吗?对这个概念还不是很清楚
回复 支持 反对

使用道具 举报

发表于 2016-12-28 14:55:55 | 显示全部楼层
yaojunjie 发表于 2016-12-28 11:30
野火的教程都是用中断写的,请问串口发送数据一定要使用中断吗?对这个概念还不是很清楚

发送数据时参考fput重定向的例子,没有用中断的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-14 02:03 , Processed in 0.030763 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表