打印

关于GD32F130的USART

[复制链接]
4372|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangwenhong1992|  楼主 | 2015-8-3 09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用官网上的示例程序为什么一直没有哦数据?程序如下:
int main(void)
{
                SysTick_Configuration();               //这个函数官网上没有写,我加上的
    /* NVIC configuration */
    NVIC_Configurationuration();
   
    /* Enable GPIOA clock */
    RCC_AHBPeriphClock_Enable( RCC_AHBPERIPH_GPIOA , ENABLE );
   
    /* Enable USART1 APB clock */
    RCC_APB2PeriphClock_Enable( RCC_APB2PERIPH_USART1 , ENABLE );
   
    /* USART1 Pins configuration **************************************************/
    GPIO_DeInit( GPIOA );
   
    {
        /* Configure the GPIO ports */
        GPIO_InitPara GPIO_InitStructure;
        /* Connect pin to Periph */
        GPIO_PinAFConfig( GPIOA , GPIO_PINSOURCE9, GPIO_AF_1 );
        GPIO_PinAFConfig( GPIOA , GPIO_PINSOURCE10, GPIO_AF_1 );
        /* Configure pins as AF pushpull */
        GPIO_InitStructure.GPIO_Pin     = GPIO_PIN_9 | GPIO_PIN_10;
        GPIO_InitStructure.GPIO_Mode     = GPIO_MODE_AF;
        GPIO_InitStructure.GPIO_Speed     = GPIO_SPEED_50MHZ;
        GPIO_InitStructure.GPIO_OType     = GPIO_OTYPE_PP;
        GPIO_InitStructure.GPIO_PuPd     = GPIO_PUPD_NOPULL;
        GPIO_Init( GPIOA , &GPIO_InitStructure);
    }
   
    {
        USART_InitPara USART_InitStructure;
      
        USART_DeInit( USART1 );
   
        USART_InitStructure.USART_BRR        = 115200;
        USART_InitStructure.USART_WL            = USART_WL_8B;
        USART_InitStructure.USART_STBits            = USART_STBITS_1;
        USART_InitStructure.USART_Parity                = USART_PARITY_RESET;
        USART_InitStructure.USART_HardwareFlowControl = USART_HARDWAREFLOWCONTROL_NONE;
        USART_InitStructure.USART_RxorTx                = USART_RXORTX_RX | USART_RXORTX_TX;
        USART_Init(USART1, &USART_InitStructure);
    }
    USART_Enable(USART1, ENABLE);
    /* Enable the USART1 Transmoit interrupt: this interrupt is generated when the
    USART1 transmit data register is empty */  
    USART_INT_Set(USART1, USART_INT_TBE, ENABLE);
   
    /* Wait until USART1 send the TxBuffer */
    while(TxCount < NbrOfDataToTransfer)
    {}
   
    /* The software must wait until TC=1. The TC flag remains cleared during all data
    transfers and it is set by hardware at the last frame end of transmission*/
    while (USART_GetBitState(USART1, USART_FLAG_TC) == RESET)
    {}
   
    /* Enable the USART1 Receive interrupt: this interrupt is generated when the
    USART1 receive data register is not empty */
    USART_INT_Set(USART1, USART_INT_RBNE, ENABLE);
   
    /* Wait until USART1 receive the RxBuffer */
    while(RxCount < NbrOfDataToRead)
    {}
    if(RxCount == NbrOfDataToRead)
    printf("\n\r USART receive successfully!\n\r");
      
    /* Infinite loop */
    while (1)
    {
    }
}
沙发
mumu3013| | 2015-8-3 10:18 | 只看该作者
把这个去掉试试,然后看下晶振和时钟是否正确,debug下,
SysTick_Configuration();               //这个函数官网上没有写,我加上的

使用特权

评论回复
板凳
kangwenhong1992|  楼主 | 2015-8-4 09:14 | 只看该作者
mumu3013 发表于 2015-8-3 10:18
把这个去掉试试,然后看下晶振和时钟是否正确,debug下,
SysTick_Configuration();               //这个 ...

不是这个的原因,这个问题已经解决了,但是现在有新的问题我想知道USART2初始化设置的时候有什么特殊的设置吗?为什么我和USART1相同的设置可是USART的STR寄存器中的REA一直不置位,导致我一直不能接受。。。

使用特权

评论回复
地板
mumu3013| | 2015-8-4 10:48 | 只看该作者
kangwenhong1992 发表于 2015-8-4 09:14
不是这个的原因,这个问题已经解决了,但是现在有新的问题我想知道USART2初始化设置的时候有什么特殊的设 ...

之前什么问题造成的?
USART2我试了一下,也是没那一位,具体不清楚为啥

使用特权

评论回复
5
dbayj| | 2015-8-4 12:27 | 只看该作者
你的是130G4还是其他?引脚定义不一样的,G4的PA2和PA3只能是USART1

使用特权

评论回复
6
dbayj| | 2015-8-4 12:30 | 只看该作者
回错帖子了,我回答的是你另外一个帖子的问题。

使用特权

评论回复
7
kangwenhong1992|  楼主 | 2015-8-5 20:34 | 只看该作者
mumu3013 发表于 2015-8-4 10:48
之前什么问题造成的?
USART2我试了一下,也是没那一位,具体不清楚为啥

不知道哎,不过奇怪的是不论有没有置位他可以接受了。。。。。我想知道在串口接受的时候,我怎么判断他接受完了呢?就是说他发送的数据没有达到接受缓存区的上限值我怎么判断他接受完了??然后去用接收的数据?

使用特权

评论回复
8
mumu3013| | 2015-8-6 14:05 | 只看该作者
这一位和接收有多少有关系吗?

串口一次只能接收一个数据位(8或9位)的数据,每次接收后,
如果一帧接收完成,并且RBNE位置位,那么就可以读USART_RDTR寄存器
RBNE位必须在下一帧数据到达之前清0,否则就会造成过载错误。

来一帧数据你要接收一下,放在你处理的缓冲区呢,怎么判断接收完成,是你自己通信预定的,

使用特权

评论回复
9
白骨之舞| | 2017-8-2 19:38 | 只看该作者
kangwenhong1992 发表于 2015-8-4 09:14
不是这个的原因,这个问题已经解决了,但是现在有新的问题我想知道USART2初始化设置的时候有什么特殊的设 ...

你好,这个是什么原因,能告诉下吗

使用特权

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

本版积分规则

8

主题

12

帖子

0

粉丝