|
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周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|