串口printf
- #include "bsp_uart.h"
- void bsp_uart_init(uint32_t baudrate)
- {
- gpio_init_type gpio_init_struct;
- /* enable the uart and gpio clock */
- crm_periph_clock_enable(PRINT_UART_CRM_CLK, TRUE);
- crm_periph_clock_enable(PRINT_UART_TX_GPIO_CRM_CLK, TRUE);
- gpio_default_para_init(&gpio_init_struct);
- /* configure the uart tx pin */
- gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
- gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
- gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
- gpio_init_struct.gpio_pins = PRINT_UART_TX_PIN;
- gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
- gpio_init(PRINT_UART_TX_GPIO, &gpio_init_struct);
- gpio_pin_mux_config(PRINT_UART_TX_GPIO, PRINT_UART_TX_PIN_SOURCE, PRINT_UART_TX_PIN_MUX_NUM);
- /* configure uart param */
- usart_init(PRINT_UART, baudrate, USART_DATA_8BITS, USART_STOP_1_BIT);
- usart_transmitter_enable(PRINT_UART, TRUE);
- usart_enable(PRINT_UART, TRUE);
- }
- int fputc(int ch, FILE *f)
- {
- while(usart_flag_get(PRINT_UART, USART_TDBE_FLAG) == RESET);
- usart_data_transmit(PRINT_UART, (uint16_t)ch);
- while(usart_flag_get(PRINT_UART, USART_TDC_FLAG) == RESET);
- return ch;
- }
- #ifndef __BSP_UART_H__
- #define __BSP_UART_H__
- #include "at32f402_405.h"
- #include <stdio.h>
- /**************** define print uart ******************/
- #define PRINT_UART USART1
- #define PRINT_UART_CRM_CLK CRM_USART1_PERIPH_CLOCK
- #define PRINT_UART_TX_PIN GPIO_PINS_9
- #define PRINT_UART_TX_GPIO GPIOA
- #define PRINT_UART_TX_GPIO_CRM_CLK CRM_GPIOA_PERIPH_CLOCK
- #define PRINT_UART_TX_PIN_SOURCE GPIO_PINS_SOURCE9
- #define PRINT_UART_TX_PIN_MUX_NUM GPIO_MUX_7
- void bsp_uart_init(uint32_t baudrate);
- #endif
- int main()
- {
- system_clock_config();
- bsp_led_init();
- bsp_timer_init();
- bsp_uart_init(115200);
-
- while(1)
- {
- if(time_flag)
- {
- time_flag = 0;
- LED4_TOGGLE();
- printf("led4 toggle ....\n");
- }
- }
- return 0;
- }
|