

波特率:每秒切换符号的次数(符号不是指一个bit位,他可以是多个)
比特率:每秒发送bit数量
在USART中,一个符号一bit,所以波特率等于比特率
全双工通讯 :一根发送线一根接收线(同步通信还有一根时钟线)
配置代码:
void Uart1_GPIO_init(void)
{
GPIO_InitTypeDef GPIO_Initstructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
//TX==> PA9
GPIO_Initstructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Initstructure.GPIO_OType = GPIO_OType_PP;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_9;
GPIO_Initstructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIO_Initstructure);
//RX==> PA10
GPIO_Initstructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Initstructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_Initstructure);
}
void Uart1_init(void)
{
USART_InitTypeDef USART_InitStructure;
Uart1_GPIO_init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
USART_InitStructure.USART_BaudRate = 115200; //115200
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
步骤1:根据数据手册选一组你想要的io口做RX/TX线
步骤2:分别配置GPIO模式(看第一篇),指定复用的io口
步骤3:配置复用模式(打开对应复用功能时钟==>>配置uart==>>启用USART功能)
fputc重定向代码:需包含stdio.h
int fputc(int ch, FILE *f)
{
USART_TypeDef * usart_x = USART1;
while((usart_x->SR & (1<<7)) == 0); // Wait until TXE is set
usart_x->DR = ch;
return ch;
}
该位等于0的时候说明发送数据寄存器的数据还未转移到移位寄存器中,不为空

得勾选这个才能完成fputc函数重定向操作
9200

被折叠的 条评论
为什么被折叠?



