先测评串口:开发板是20脚标准的JTAG,SWD只需要4根,PA13,PA14,GND,VDD。引出JLINK接口。
时钟初始换:打开外部时钟,串口2时钟,GPIOA 口
void BOARD_InitBootClocks(void)
{
CLOCK_ResetToDefault();
CLOCK_BootToHSE48MHz();
/* UART1. */
RCC_EnableAPB1Periphs(RCC_APB1_PERIPH_UART2, true);
RCC_ResetAPB1Periphs(RCC_APB1_PERIPH_UART2);
/* GPIOA. */
RCC_EnableAHBPeriphs(RCC_AHB_PERIPH_GPIOA, true);
RCC_ResetAHBPeriphs(RCC_AHB_PERIPH_GPIOA);
}
串口2 PA2 PA3初始化
void BOARD_InitPins(void){ GPIO_Init_Type gpio_init; /* PA2 - UART2_TX. */ gpio_init.Pins = GPIO_PIN_2; gpio_init.PinMode = GPIO_PinMode_AF_PushPull; gpio_init.Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpio_init); GPIO_PinAFConf(GPIOA, GPIO_PIN_2, GPIO_AF_1); /* PA3 - UART2_RX. */ gpio_init.Pins = GPIO_PIN_3; gpio_init.PinMode = GPIO_PinMode_In_Floating; gpio_init.Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpio_init); GPIO_PinAFConf(GPIOA, GPIO_PIN_3, GPIO_AF_1); }
复制代码串口配置:
void app_uart_init(void){ UART_Init_Type uart_init; uart_init.ClockFreqHz = BOARD_DEBUG_UART_FREQ; uart_init.BaudRate = BOARD_DEBUG_UART_BAUDRATE; uart_init.WordLength = UART_WordLength_8b; uart_init.StopBits = UART_StopBits_1; uart_init.Parity = UART_Parity_None; uart_init.XferMode = UART_XferMode_RxTx; uart_init.HwFlowControl = UART_HwFlowControl_None; UART_Init(BOARD_DEBUG_UART_PORT, &uart_init); UART_Enable(BOARD_DEBUG_UART_PORT, true); }
复制代码稳定简单!!