搜索
bottom↓
回复: 3

STM32F107 RTT1.2.2,想把终端输出改到UART3,帮忙看看还差什么?

[复制链接]

出0入4汤圆

发表于 2014-11-5 16:12:39 | 显示全部楼层 |阅读模式
STM32F107的板子,想把终端输出改到UART3,改了几个地方还不行,大家帮忙看看还差什么
STM32F107VC芯片 PD9 PD8 管脚为串口,修改了以下地方
rtconfig.h
#define RT_CONSOLE_DEVICE_NAME        "uart3" //修改为uart3
增加
#define RT_USING_UART3

usart.c
#ifdef RT_USING_UART3
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//注释掉本行
        //UART3 REMAP 增加以下2行
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOD, ENABLE);
        GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE);
        /* Enable USART3 clock */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

        /* DMA clock enable */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
#endif

/* USART3_REMAP[1:0] = 00 */
//#define UART3_GPIO_RX                GPIO_Pin_11
//#define UART3_GPIO_TX                GPIO_Pin_10
//#define UART3_GPIO                        GPIOB
#define RCC_APBPeriph_UART3        RCC_APB1Periph_USART3
#define UART3_TX_DMA                DMA1_Channel2
#define UART3_RX_DMA                DMA1_Channel3
// USART3 REMAP 以下为端口定义修改
#define UART3_GPIO_RX                GPIO_Pin_9
#define UART3_GPIO_TX                GPIO_Pin_8
#define UART3_GPIO                        GPIOD

//注释以下DMA初始化代码
#if defined (RT_USING_UART3)
//        DMA_InitTypeDef DMA_InitStructure;

//        /* fill init structure */
//        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
//        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
//        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
//        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
//        DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
//        DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
//        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

//        /* DMA1 Channel5 (triggered by USART3 Tx event) Config */
//        DMA_DeInit(UART3_TX_DMA);
//        DMA_InitStructure.DMA_PeripheralBaseAddr = USART3_DR_Base;
//        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
//        DMA_InitStructure.DMA_MemoryBaseAddr = (u32)0;
//        DMA_InitStructure.DMA_BufferSize = 0;
//        DMA_Init(UART3_TX_DMA, &DMA_InitStructure);
//        DMA_ITConfig(UART3_TX_DMA, DMA_IT_TC | DMA_IT_TE, ENABLE);
//        DMA_ClearFlag(DMA1_FLAG_TC5);
#endif

//注释以下DMA相关代码
        //uart3_dma_tx.dma_channel= UART3_TX_DMA;

        /* register uart3 */
        //rt_hw_serial_register(&uart3_device, "uart3",
        //        RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX,
        //        &uart3);
        rt_hw_serial_register(&uart3_device, "uart3",
                                         RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
                                         &uart3);
        /* Enable USART3 DMA Tx request */
        //USART_DMACmd(USART3, USART_DMAReq_Tx , ENABLE);

        /* enable interrupt */
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
#endif

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入4汤圆

 楼主| 发表于 2014-11-6 08:48:45 | 显示全部楼层
自顶一下,问题比较低级,多多包涵

出0入0汤圆

发表于 2014-11-6 14:50:32 | 显示全部楼层
#define CONSOLE_DEVICE "uart3"
rt_console_set_device(CONSOLE_DEVICE);

出0入4汤圆

 楼主| 发表于 2014-11-6 16:17:52 | 显示全部楼层
谢谢,已OK,修改的没有问题,是硬件出了问题。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 07:00

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

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