目錄
1. 串口配置--普通模式
2. 實現(xiàn)數(shù)據(jù)的傳輸主函數(shù)
1)單引號雙引號的應用&數(shù)組傳輸
2)將調(diào)試信息用串口打印傳送到電腦上
1. 串口配置--普通模式
F407使用的M4內(nèi)核與F103使用的M3內(nèi)核不一樣,導致在使用配置上有區(qū)別。需要在F103配置的基礎(chǔ)上專門將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); //打開外設(shè)對應的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);
//中斷優(yōu)先級配置
NVIC_Configuration();
//中斷源,接收產(chǎn)生中斷
USART_ITConfig(DEBUG_USARTx,USART_IT_RXNE,ENABLE);
//串口使能,開啟串口
USART_Cmd(DEBUG_USARTx,ENABLE); //相當于開啟USART工作時鐘,讓USART工作
}
? ? ? ? 檢查到串口是否接收到數(shù)據(jù)可以通過接收中斷或者查看標志位。文章來源:http://www.zghlxwxcb.cn/news/detail-574878.html
2. 實現(xiàn)數(shù)據(jù)的傳輸主函數(shù)
1)單引號雙引號的應用&數(shù)組傳輸
usart_send_byte(DEBUG_USARTx,'a'); //單引號只能放單個字節(jié)
usart_send_byte(DEBUG_USARTx,'\n');
usart_send_string(DEBUG_USARTx,"yanghaizhu\n"); //雙引號使能放字符串
//傳輸數(shù)組
char array[5]={'0','2','4','6','8'};
usart_send_array(DEBUG_USARTx, array, sizeof(array));
2)將調(diào)試信息用串口打印傳送到電腦上
即,重新編寫printf函數(shù)中的fputc()和fgetc()這兩個函數(shù),使得直接調(diào)用printf函數(shù)就可以將相應的信息通過串口輸出。文章來源地址http://www.zghlxwxcb.cn/news/detail-574878.html
///重定向c庫函數(shù)printf到串口,重定向后可使用printf函數(shù)
int fputc(int ch, FILE *f)
{
/* 發(fā)送一個字節(jié)數(shù)據(jù)到串口 */
USART_SendData(DEBUG_USARTx, (uint8_t) ch);
/* 等待發(fā)送完畢 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
return (ch);
}
///重定向c庫函數(shù)scanf到串口,重寫向后可使用scanf、getchar等函數(shù)
int fgetc(FILE *f)
{
/* 等待串口輸入數(shù)據(jù) */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(DEBUG_USARTx);
}
到了這里,關(guān)于STM32F407 --USART使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!