53 lines
2.0 KiB
C
53 lines
2.0 KiB
C
#include "printf.h"
|
||
|
||
|
||
int fputc(int ch,FILE *p) //函数默认的,在使用printf函数时自动调用
|
||
{
|
||
USART_SendData(USART1,(u8)ch);
|
||
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
|
||
return ch;
|
||
}
|
||
|
||
/*******************************************************************************
|
||
* 函 数 名 : printf_init
|
||
* 函数功能 : IO端口及串口1,时钟初始化函数
|
||
* 输 入 : 无
|
||
* 输 出 : 无
|
||
*******************************************************************************/
|
||
void printf_init() //printf初始化
|
||
{
|
||
GPIO_InitTypeDef GPIO_InitStructure; //声明一个结构体变量,用来初始化GPIO
|
||
NVIC_InitTypeDef NVIC_InitStructure; //中断结构体定义
|
||
USART_InitTypeDef USART_InitStructure; //串口结构体定义
|
||
|
||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE);
|
||
|
||
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX
|
||
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
|
||
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
|
||
GPIO_Init(GPIOA,&GPIO_InitStructure);
|
||
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX
|
||
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
|
||
GPIO_Init(GPIOA,&GPIO_InitStructure);
|
||
|
||
|
||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
|
||
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
|
||
USART_InitStructure.USART_BaudRate=9600; //波特率设置为9600
|
||
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
|
||
USART_InitStructure.USART_StopBits=USART_StopBits_1;
|
||
USART_InitStructure.USART_Parity=USART_Parity_No;
|
||
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
|
||
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
|
||
USART_Init(USART1,&USART_InitStructure);
|
||
USART_Cmd(USART1, ENABLE);
|
||
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能或者失能指定的USART中断 接收中断
|
||
USART_ClearFlag(USART1,USART_FLAG_TC);//清除USARTx的待处理标志位
|
||
}
|