void usart_config(u32 BaudRate)
{
// // 数据发送过程
// RCC->APB2RSTR &= ~(1<<14); //USART1RST置零,USART1复位 (USART1 reset)
// //1.通过在USART_CR1寄存器上置位UE位来激活USART;
// USART1->CR1 |= 1<<13; //UE位置1:USART模块使能;
// //2.编程USART_CR1的M位来定义字长;
// USART1->CR1 &= ~(1<<12); //M位置0:一个起始位,8个数据位,n个停止位;
// //3.在USART_CR2中编程停止位的位数;
// USART1->CR2 &= ~(3<<12); //STOP: 停止位,00:1个停止位;
// //4.如果采用多缓冲器通信,配置USART_CR3中得DMA使能位(DMAT),
// // 按多缓冲器通信中的描述配置DMA寄存器;
// //5.设置USART_CR1中的TE位,发送一个空闲帧为第一次数据发送;
// USART1->CR1 |= 1<<3; //TE: 发送使能,1:发送被使能。
// //6.利用USART_BRR寄存器选择要求的波特率。
// //设置波特率为9600
// USART1->BRR = mantissa;
// //7.把要发送的数据写进USART_DR寄存器(此动作清除TXE位);
// //发送一个数据“A”
// //在只有一个缓冲器的情况下,对每个待发送的数据重复步骤7.
USART_InitTypeDef USART_InitStructure;
//开启USART1EN:USART1时钟使能 (USART1 clock enable)
RCC->APB2ENR |= 1<<14; //置位USART1EN1:USART1时钟开启。
/*--配置USART1,
6.利用USART_BRR寄存器选择要求的波特率。波特率:9600,
2.编程USART_CR1的M位来定义字长;8位数据位,
3.在USART_CR2中编程停止位的位数;1位停止位,
奇偶校验关闭--*/
USART_InitStructure.USART_BaudRate = BaudRate; //设置波特率为9600
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //设置8位数据位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //设置1位停止位
USART_InitStructure.USART_Parity = USART_Parity_Odd; //设置奇偶校验关闭
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //设置硬件流控制关闭
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; //发送使能,接收使能
// USART_InitStructure.USART_Clock = USART_Clock_Enable;
// USART_InitStructure.USART_CPOL = USART_CPOL_High;
// USART_InitStructure.USART_CPHA = USART_CPHA_1Edge;
// USART_InitStructure.USART_LastBit = USART_LastBit_Enable;
USART_Init(USART1, &USART_InitStructure); //根据上述设置寄存器,配置USART1
/*--1.通过在USART_CR1寄存器上置位UE位来激活USART--*/
USART_Cmd(USART1, ENABLE);
}
{
// // 数据发送过程
// RCC->APB2RSTR &= ~(1<<14); //USART1RST置零,USART1复位 (USART1 reset)
// //1.通过在USART_CR1寄存器上置位UE位来激活USART;
// USART1->CR1 |= 1<<13; //UE位置1:USART模块使能;
// //2.编程USART_CR1的M位来定义字长;
// USART1->CR1 &= ~(1<<12); //M位置0:一个起始位,8个数据位,n个停止位;
// //3.在USART_CR2中编程停止位的位数;
// USART1->CR2 &= ~(3<<12); //STOP: 停止位,00:1个停止位;
// //4.如果采用多缓冲器通信,配置USART_CR3中得DMA使能位(DMAT),
// // 按多缓冲器通信中的描述配置DMA寄存器;
// //5.设置USART_CR1中的TE位,发送一个空闲帧为第一次数据发送;
// USART1->CR1 |= 1<<3; //TE: 发送使能,1:发送被使能。
// //6.利用USART_BRR寄存器选择要求的波特率。
// //设置波特率为9600
// USART1->BRR = mantissa;
// //7.把要发送的数据写进USART_DR寄存器(此动作清除TXE位);
// //发送一个数据“A”
// //在只有一个缓冲器的情况下,对每个待发送的数据重复步骤7.
USART_InitTypeDef USART_InitStructure;
//开启USART1EN:USART1时钟使能 (USART1 clock enable)
RCC->APB2ENR |= 1<<14; //置位USART1EN1:USART1时钟开启。
/*--配置USART1,
6.利用USART_BRR寄存器选择要求的波特率。波特率:9600,
2.编程USART_CR1的M位来定义字长;8位数据位,
3.在USART_CR2中编程停止位的位数;1位停止位,
奇偶校验关闭--*/
USART_InitStructure.USART_BaudRate = BaudRate; //设置波特率为9600
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //设置8位数据位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //设置1位停止位
USART_InitStructure.USART_Parity = USART_Parity_Odd; //设置奇偶校验关闭
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //设置硬件流控制关闭
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; //发送使能,接收使能
// USART_InitStructure.USART_Clock = USART_Clock_Enable;
// USART_InitStructure.USART_CPOL = USART_CPOL_High;
// USART_InitStructure.USART_CPHA = USART_CPHA_1Edge;
// USART_InitStructure.USART_LastBit = USART_LastBit_Enable;
USART_Init(USART1, &USART_InitStructure); //根据上述设置寄存器,配置USART1
/*--1.通过在USART_CR1寄存器上置位UE位来激活USART--*/
USART_Cmd(USART1, ENABLE);
}