还是把完整的测试代码贴出来吧: void SCU_Configuration(void); void GPIO_Configuration(void); void UART_Configuration(u16 baud); int main() { #ifdef DEBUG debug(); #endif u32 cc; SCU_Configuration(); GPIO_Configuration(); UART_Configuration(38400); UART_SendData(UART2, 0x55); UART_SendData(UART2, 0x77); DMA_DeInit(); DMA_Cmd(ENABLE); DMA_ChannelCmd (DMA_Channel0,DISABLE); DMA_Channel0->CC = 0xFFFFFFFF; cc = DMA_Channel0->CC; UART_SendData(UART2, cc>>24); UART_SendData(UART2, cc>>16); UART_SendData(UART2, cc>>8); UART_SendData(UART2, cc); DMA_ChannelCmd (DMA_Channel0,ENABLE); while(1); } void SCU_Configuration(void) { SCU_MCLKSourceConfig(SCU_MCLK_OSC); SCU_PLLCmd(DISABLE); SCU_RCLKDivisorConfig(SCU_RCLK_Div1); SCU_PCLKDivisorConfig(SCU_PCLK_Div1); SCU_HCLKDivisorConfig(SCU_HCLK_Div1); SCU_FMICLKDivisorConfig(SCU_FMICLK_Div1); SCU_EMIBCLKDivisorConfig(SCU_EMIBCLK_Div1); SCU_PLLFactorsConfig(125, 12, 3);//48M SCU_PLLCmd(ENABLE); SCU_MCLKSourceConfig(SCU_MCLK_PLL); /* Enable the UART2 Clock */ SCU_APBPeriphClockConfig(__UART2, ENABLE); UART_DeInit(UART2);
/* Enable the GPIO Clock */ SCU_APBPeriphClockConfig(__GPIO0, ENABLE); SCU_APBPeriphClockConfig(__GPIO1, ENABLE); SCU_APBPeriphClockConfig(__GPIO2, ENABLE); SCU_APBPeriphClockConfig(__GPIO3, ENABLE); SCU_APBPeriphClockConfig(__GPIO4, ENABLE); SCU_APBPeriphClockConfig(__GPIO5, ENABLE); SCU_APBPeriphClockConfig(__GPIO6, ENABLE); SCU_APBPeriphClockConfig(__GPIO7, ENABLE); SCU_APBPeriphClockConfig(__GPIO8, ENABLE); SCU_APBPeriphClockConfig(__GPIO9, ENABLE); /* Enable the clock for DMA*/ SCU_AHBPeriphClockConfig(__DMA,ENABLE); DMA_DeInit(); }
void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_DeInit(GPIO0); GPIO_DeInit(GPIO1); GPIO_DeInit(GPIO2); GPIO_DeInit(GPIO3); GPIO_DeInit(GPIO4); GPIO_DeInit(GPIO5); GPIO_DeInit(GPIO6); GPIO_DeInit(GPIO7); GPIO_DeInit(GPIO8); GPIO_DeInit(GPIO9); /* Gonfigure SPI1 As GPIO*/ /* CLK(P3.4)、MOSI(P3.6) As Output */ GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_6; GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2; GPIO_Init (GPIO3, &GPIO_InitStructure); /* MISO(P3.5) As Input */ GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1; GPIO_Init (GPIO3, &GPIO_InitStructure); /* CS(P3.7) As Output1 */ GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Disable; GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt1; GPIO_Init (GPIO3, &GPIO_InitStructure); /* Gonfigure UART2 */ /*Gonfigure UART2_Tx pin GPIO3.0*/ GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2; GPIO_Init (GPIO3, &GPIO_InitStructure); /*Gonfigure UART2_Rx pin GPIO3.1*/ GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1; GPIO_Init (GPIO3, &GPIO_InitStructure); } void UART_Configuration(u16 baud) { UART_InitTypeDef UART_InitStruct; /* UART Structure Initialization */ UART_StructInit(&UART_InitStruct); /* UART Configuration */ UART_InitStruct.UART_WordLength = UART_WordLength_8D; UART_InitStruct.UART_StopBits = UART_StopBits_1; UART_InitStruct.UART_Parity = UART_Parity_No ; UART_InitStruct.UART_BaudRate = baud; UART_InitStruct.UART_HardwareFlowControl = UART_HardwareFlowControl_None; UART_InitStruct.UART_Mode = UART_Mode_Tx_Rx; UART_InitStruct.UART_FIFO = UART_FIFO_Disable; UART_Init(UART2, &UART_InitStruct); UART_ITConfig(UART2, UART_IT_Receive, ENABLE); VIC_Config(UART2_ITLine, VIC_IRQ, 4); VIC_ITCmd(UART2_ITLine, ENABLE); UART_Cmd(UART2, ENABLE);// Enable the UART2 } |