armfans 发表于 2010-7-22 22:01:16

RT-Thread使用UART2的问题,怎么会进入OTG的中断啊

因为UART1的管脚被占用了,所以使用UART2管脚,芯片是STM32103FRBT6,使用PA2和PA3作为UART2的TX,RX。
定义defined(STM32F10X_MD)
修改rtconfig.h
/* SECTION: Device System */
/* Using Device System */
#define RT_USING_DEVICE
#define RT_USING_UART2

修改uart.c
#if defined(STM32F10X_LD) || defined(STM32F10X_CL)
#define UART2_GPIO_TX          GPIO_Pin_5
#define UART2_GPIO_RX          GPIO_Pin_6
#define UART2_GPIO                  GPIOD
#define RCC_APBPeriph_UART2        RCC_APB1Periph_USART2
#else /* for STM32F10X_HD */
/* USART2_REMAP = 0 */
#define UART2_GPIO_TX                GPIO_Pin_2
#define UART2_GPIO_RX                GPIO_Pin_3
#define UART2_GPIO                        GPIOA
#define RCC_APBPeriph_UART2        RCC_APB1Periph_USART2
#define UART2_TX_DMA                DMA1_Channel7
#define UART2_RX_DMA                DMA1_Channel6
#endif
#ifdef RT_USING_UART2

#if (defined(STM32F10X_LD) || defined(STM32F10X_CL))
    /* Enable AFIO and GPIOD clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOD, ENABLE);

    /* Enable the USART2 Pins Software Remapping */
    GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
#else
    /* Enable AFIO and GPIOA clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
#endif

仿真时怎么会进入
OTG_FS_IRQHandler
                B       .

                ENDP

                ALIGN
就死掉了,不明白怎么会进入OTG的中断,是不是还有地方需要修改啊,使用UART1就没有问题,弄了一天了也没发现问题,哪位使用过UART2,可以发个程序看看吗,多谢了

aozima 发表于 2010-7-22 22:05:40

并不是进了OTG中断,而是N个中断共用一个服务程序就是while(1)   汇编:B .
之所以你认为是OTG是因为: OTG在最后一行.
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
EXTI15_10_IRQHandler
....................
DMA2_Channel5_IRQHandler
ETH_IRQHandler
ETH_WKUP_IRQHandler
CAN2_TX_IRQHandler
CAN2_RX0_IRQHandler
CAN2_RX1_IRQHandler
CAN2_SCE_IRQHandler
OTG_FS_IRQHandler
                B       .

103RB基本没有OTG.为什么RT-Thread的启动代码里面有OTG?
是因为STM32向下兼容性很好.所以.写一个通用的,全部适用.也就多占用几个字节而已.

原因: 你没有添加USART2的中断服务函数.

armfans 发表于 2010-7-22 22:20:14

多谢aozima,还有点不明白的地方,UART2是采用轮询发送,DMA接收,PA3-RX我没有接,只接了PA2-TX,按理说不应该产生中断啊,所以就没有加接收中断服务函数,现在只是调试示例程序,没有使用finsh,只使用rt_kprintf()作为状态输出。

armfans 发表于 2010-7-22 22:42:51

搞定了,自己太粗心了,又查了边硬件,发现是连焊了,不好意思,耽误各位时间了。

lhj200304 发表于 2010-8-14 21:09:44

现象越奇特,错误越低级,这是我 的经验
页: [1]
查看完整版本: RT-Thread使用UART2的问题,怎么会进入OTG的中断啊