* USART0串口初始化函数
* 参数:波特率
* 返回值:无 */
void uart0_init(uint32_t bound)
{
/* 使能 GPIOA 时钟 */
rcu_periph_clock_enable(RCU_GPIOA);
/* 使能 USART0 时钟 */
rcu_periph_clock_enable(RCU_USART0);
/* PA9 复用为 USART0_Tx */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_9);
/* PA10 复用为 USARTx_Rx */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ,GPIO_PIN_10);
/* USART0 初始化配置 */
usart_deinit(USART0);
usart_baudrate_set(USART0, bound); /* 设置波特率 */
usart_word_length_set(USART0, USART_WL_8BIT); /* 字长为8位数据格式 */
usart_stop_bit_set(USART0, USART_STB_1BIT); /* 1个停止位 */
usart_parity_config(USART0, USART_PM_NONE); /* 无奇偶校验位 */
usart_receive_config(USART0, USART_RECEIVE_ENABLE); /* 使能接收 */
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); /* 使能发送 */
usart_enable(USART0); /* 使能串口0 */
usart_interrupt_enable(USART0, USART_INT_RBNE);//Enable recieve interrupt
nvic_irq_enable(USART0_IRQn, 0, 1);
usart_flag_clear(USART0, USART_FLAG_RBNE);//Clear RBNE flag
}
int fputc(int ch, FILE *f)
{
usart_data_transmit(USART0, (uint8_t)ch);
while (RESET == usart_flag_get(USART0, USART_FLAG_TBE));
return ch;
} |
编译器用的是keil5,不只为何串口时钟无反应。硬件无问题,因为用STM32的库时能正常串口能正常启动打印数据