打印

求助:串口一直进入接收中断的问题。

[复制链接]
3976|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cug_niubosong|  楼主 | 2017-4-19 19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GD32F130C8 配置好UART1后,仿真运行,一直进入串口接收中断。
沙发
cug_niubosong|  楼主 | 2017-4-19 19:06 | 只看该作者
void uart1_config(void)
{
    USART_InitPara USART_InitStructure;
    GPIO_InitPara GPIO_InitStructure;

    USART_InitStructure.USART_BRR = 9600;
    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_INT_Set(USART1, USART_INT_RBNE, ENABLE);
    USART_Enable(USART1, ENABLE);

    GPIO_PinAFConfig(UART1TX_GPIO, UART1TX_PIN, GPIO_AF_1);
    GPIO_PinAFConfig(UART1RX_GPIO, UART1RX_PIN, GPIO_AF_1);

    GPIO_InitStructure.GPIO_Pin = UART1TX_PIN;
    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(UART1TX_GPIO, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = UART1RX_PIN;
    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(UART1RX_GPIO, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = UART1EN_PIN;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PUPD_NOPULL;
    GPIO_Init(UART1EN_GPIO, &GPIO_InitStructure);  
   
    UART1RXEN();
    //UART1TXEN();
}
配置函数

使用特权

评论回复
板凳
cug_niubosong|  楼主 | 2017-4-19 19:08 | 只看该作者
void USART1_IRQHandler(void)
{
    if(USART_GetIntBitState(USART1,USART_INT_RBNE) != RESET)
    {
        //USART_ClearIntBitState(USART1,USART_INT_ORE);
        if(RxCounter > 7) RxCounter = 0;
        
        RxBuffer[RxCounter++] = (u8)USART_DataReceive(USART1);
    }
    USART_ClearIntBitState(USART1,USART_INT_ORE);
}

使用特权

评论回复
地板
yankaibing| | 2017-4-20 17:53 | 只看该作者
顶  学习下很好

使用特权

评论回复
5
smilingangel| | 2017-4-22 12:09 | 只看该作者
cug_niubosong 发表于 2017-4-19 19:06
void uart1_config(void)
{
    USART_InitPara USART_InitStructure;

这个配置函数的很重要。

使用特权

评论回复
6
cug_niubosong|  楼主 | 2017-4-24 15:38 | 只看该作者
smilingangel 发表于 2017-4-22 12:09
这个配置函数的很重要。

这个问题已经解决了,函数都没有问题,是我马虎,用错串口了

使用特权

评论回复
7
tongbu2015| | 2017-4-27 22:31 | 只看该作者
这个是串口的被外界影响了,,简答说你用的串口板的有问题

使用特权

评论回复
8
vibra2016| | 2017-4-29 13:08 | 只看该作者
这个肯定是硬件影响的了

使用特权

评论回复
9
angerbird| | 2017-4-29 15:52 | 只看该作者
cug_niubosong 发表于 2017-4-19 19:08
void USART1_IRQHandler(void)
{
    if(USART_GetIntBitState(USART1,USART_INT_RBNE) != RESET)

程序的设计蛮不错,,没看出啥问题的

使用特权

评论回复
10
shenmu2012| | 2017-4-29 16:10 | 只看该作者
这个可能是硬件引起的

使用特权

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

本版积分规则

3

主题

16

帖子

0

粉丝