打印

香版:STM32F103VE的UART4和UART5的中断

[复制链接]
5060|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzzly|  楼主 | 2011-11-16 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yzzly 于 2011-11-16 10:51 编辑

系统USART1、USART2、USART3工作正常,一旦使能UART4或者UART5的收发中断就出现硬件错误,可能是什么情况?UART的初始化出现是一样的,在另一个工程内就正常!!!
沙发
yzzly|  楼主 | 2011-11-16 10:58 | 只看该作者
郁闷!

使用特权

评论回复
板凳
yzzly|  楼主 | 2011-11-16 11:36 | 只看该作者
#if(USART4)
        USART_DeInit(UART4);
//        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
        NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQChannel;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);                //使能端口C时钟
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOC, &GPIO_InitStructure);                                                //PC11-RXD4
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);                                                //PC10-TXD4为推挽复用输出

        Txd4_Cnt=Txd4_len=Txd4_timer=0;
        Rxd4_Cnt=Rxd4_len=Rxd4_timer=Flags1.Rxd4Over=0;
       
        USART_InitStructure.USART_BaudRate = UART4_BaudRate;
        USART_InitStructure.USART_WordLength = (UART4_WordLen/9) << 12;
        USART_InitStructure.USART_Parity = UART4_PCE << 10;
        USART_InitStructure.USART_Parity |= UART4_PS << 9;
        USART_InitStructure.USART_StopBits = UART4_StopBit << 12;
        USART_InitStructure.USART_Mode = (UART4_RxEn<<2) | (UART4_TxEn<<3);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);                //使能UART4时钟
        USART_Init(UART4, &USART_InitStructure);
//        UART4->CR1 |= UART4_TxEIE << 7;
//        UART4->CR1 |= UART4_RxNEIE << 6;
        UART4->CR1 |= USART4 << 13;                                                                        //使能USART4
        #endif

使用特权

评论回复
地板
yzzly|  楼主 | 2011-11-16 12:31 | 只看该作者
把所有其它资源都屏蔽也不行!!!:'(

使用特权

评论回复
5
yzzly|  楼主 | 2011-11-16 13:53 | 只看该作者
看上去视乎是电脑的问题,在现在这个电脑上建立的工程总是不行,把过去在其它电脑上建立的工程的文件替换为现在的文件,则一切正常!!!

使用特权

评论回复
6
xsgy123| | 2011-11-16 19:15 | 只看该作者
没碰到过这种情况

使用特权

评论回复
7
caiwenbin| | 2011-11-16 19:49 | 只看该作者
应该是你的UART4和UART5 还没伪定义

使用特权

评论回复
8
caiwenbin| | 2011-11-16 19:55 | 只看该作者
startxxxxx.s文件中少了下面的定义
               DCD     UART4_IRQHandler          ; UART4
                DCD     UART5_IRQHandler          ; UART5
下载个新的.s文件就可以了

使用特权

评论回复
9
yzzly|  楼主 | 2011-11-17 09:16 | 只看该作者
8楼说的对,每次新建工程时都拷贝STM32F10x.s文件,而新拷贝的文件内缺少UART4和UART5部分导致总是有问题;我的老工程里的STM32F10x.s文件是经过编辑的所以没有问题。

使用特权

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

本版积分规则

427

主题

1178

帖子

3

粉丝