香版:STM32F103VE的UART4和UART5的中断

[复制链接]
 楼主| 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 | 显示全部楼层
把所有其它资源都屏蔽也不行!!!:'(
 楼主| yzzly 发表于 2011-11-16 13:53 | 显示全部楼层
看上去视乎是电脑的问题,在现在这个电脑上建立的工程总是不行,把过去在其它电脑上建立的工程的文件替换为现在的文件,则一切正常!!!
xsgy123 发表于 2011-11-16 19:15 | 显示全部楼层
没碰到过这种情况
caiwenbin 发表于 2011-11-16 19:49 | 显示全部楼层
应该是你的UART4和UART5 还没伪定义
caiwenbin 发表于 2011-11-16 19:55 | 显示全部楼层
startxxxxx.s文件中少了下面的定义
               DCD     UART4_IRQHandler          ; UART4
                DCD     UART5_IRQHandler          ; UART5
下载个新的.s文件就可以了
 楼主| yzzly 发表于 2011-11-17 09:16 | 显示全部楼层
8楼说的对,每次新建工程时都拷贝STM32F10x.s文件,而新拷贝的文件内缺少UART4和UART5部分导致总是有问题;我的老工程里的STM32F10x.s文件是经过编辑的所以没有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1187

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

428

主题

1187

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部