搜索
bottom↓
回复: 4

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

[复制链接]

出0入0汤圆

发表于 2010-7-22 22:01:16 | 显示全部楼层 |阅读模式
因为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,可以发个程序看看吗,多谢了

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 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的中断服务函数.

出0入0汤圆

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

出0入0汤圆

 楼主| 发表于 2010-7-22 22:42:51 | 显示全部楼层
搞定了,自己太粗心了,又查了边硬件,发现是连焊了,不好意思,耽误各位时间了。

出95入100汤圆

发表于 2010-8-14 21:09:44 | 显示全部楼层
现象越奇特,错误越低级,这是我 的经验
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 15:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表