目录
1. 串口配置--普通模式
2. 实现数据的传输主函数
1)单引号双引号的应用&数组传输
2)将调试信息用串口打印传送到电脑上
1. 串口配置--普通模式
F407使用的M4内核与F103使用的M3内核不一样,导致在使用配置上有区别。需要在F103配置的基础上专门将GPIO的PIN配置成复用功能USART。具体配置代码如下:
void USART_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
//时钟
DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK,ENABLE);
DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK,ENABLE); //打开外设对应的RCC时钟
//将PIN口配置成复用功能UART4 与F103不同
GPIO_PinAFConfig(GPIOC,GPIO_PinSource10,GPIO_AF_UART4);
GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_UART4);
//接口配置,初始化
//TX & RX一起配置,与F103不同
GPIO_InitStructure.GPIO_Pin=DEBUG_USART_TX_GPIO_PIN | DEBUG_USART_RX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(DEBUG_USART_TX_GPIO_PORT,&GPIO_InitStructure);
//USART配置,初始化
USART_InitStructure.USART_BaudRate=DEBUG_USART_BAUDRATE;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_Init(DEBUG_USARTx,& USART_InitStructure);
//中断优先级配置
NVIC_Configuration();
//中断源,接收产生中断
USART_ITConfig(DEBUG_USARTx,USART_IT_RXNE,ENABLE);
//串口使能,开启串口
USART_Cmd(DEBUG_USARTx,ENABLE); //相当于开启USART工作时钟,让USART工作
}
检查到串口是否接收到数据可以通过接收中断或者查看标志位。文章来源:https://www.toymoban.com/news/detail-574878.html
2. 实现数据的传输主函数
1)单引号双引号的应用&数组传输
usart_send_byte(DEBUG_USARTx,'a'); //单引号只能放单个字节
usart_send_byte(DEBUG_USARTx,'\n');
usart_send_string(DEBUG_USARTx,"yanghaizhu\n"); //双引号使能放字符串
//传输数组
char array[5]={'0','2','4','6','8'};
usart_send_array(DEBUG_USARTx, array, sizeof(array));
2)将调试信息用串口打印传送到电脑上
即,重新编写printf函数中的fputc()和fgetc()这两个函数,使得直接调用printf函数就可以将相应的信息通过串口输出。文章来源地址https://www.toymoban.com/news/detail-574878.html
///重定向c库函数printf到串口,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口 */
USART_SendData(DEBUG_USARTx, (uint8_t) ch);
/* 等待发送完毕 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
return (ch);
}
///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
/* 等待串口输入数据 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(DEBUG_USARTx);
}
到了这里,关于STM32F407 --USART使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!