串口日志打印在我们调试开发中经常用到,本篇讲述开发板实现串口打印功能 。
一.硬件准备
查阅芯片手册可开发板原理图,这里使用USART1, TX --PA9, RX --PA10
开发板扩展引脚GND、PA10、PA9接好USB转串口线如下
二.代码准备
官方SDK下Board_APM32F402_Tiny\USART\USART_Printf为基础,做如下修改。
1.main函数修改如下。加入欢迎语及LED灯切换后状态printf打印。
- int main(void)
- {
- //uint8_t i;
- USART_Config_T USART_ConfigStruct;
- //BOARD_LED_Config(LED2);
- BOARD_LED_Config(LED3);
- USART_ConfigStruct.baudRate = 115200;
- USART_ConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
- USART_ConfigStruct.mode = USART_MODE_TX;
- USART_ConfigStruct.parity = USART_PARITY_NONE;
- USART_ConfigStruct.stopBits = USART_STOP_BIT_1;
- USART_ConfigStruct.wordLength = USART_WORD_LEN_8B;
- BOARD_COM_Config(COM1, &USART_ConfigStruct);
- SystemCoreClockUpdate();
- SysTick_Config(SystemCoreClock / 1000);
- printf("Welcome to Greehy APM32F402 Micro-EVB\r\n");
- while (1)
- {
- Delay();
- // for(i = 0; i < sizeof(txBuf); i++)
- // {
- // while(USART_ReadStatusFlag(USART1, USART_FLAG_TXBE) == RESET);
- // USART_TxData(USART1, txBuf[i]);
- // }
- BOARD_LED_Toggle(LED3);
- if(GPIO_ReadOutputBit(LED3_GPIO_PORT,LED3_PIN))
- {
- printf("LED3 is OFF\r\n");
- }
- else
- {
- printf("LED3 is ON\r\n");
- }
- }
- }
2.重定向映射函数
- int fputc(int c,FILE *f)
- {
-
- while(USART_ReadStatusFlag(USART1, USART_FLAG_TXBE) == RESET);
- USART_TxData(USART1,(uint8_t)c);
- return c;
- }
3.打开微库
三.测验
编译后烧录,可以看到LED3闪烁,且串口打印日志如下
|