我查了老師給的課件上以及網上的相關代碼都是TX管腳要配置成復選推挽輸出,然后RX管腳配置成浮空輸入,但是老師給我們的GPIO頭檔案中并沒有定義 GPIO_Mode_AF_PP以及 GPIO_Mode_IN_FLOATING
然后,書上給的代碼我就更看不懂了,如下所示:(PA9是TX,PA10是RX)GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
之后,我用這個配置且用USART_SendData發了一個100,串口助手顯示的如下,而且無論發送什么都會在開頭和末尾有一個FE

而把GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);這句去掉后,串口助手只會顯示00,而且無論我是否發送資料只要按板子的復位鍵都會出現00。而且,只有把GPIO_PinAFConfig這句去掉后,USB轉串口上的RXD、TXD對應的LED燈才會亮。
uj5u.com熱心網友回復:
1、GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; 這個就是浮空,這個代碼不一樣,應該是不同系列的芯片以及不同版本庫的原因。2、100=0x64 ,也不是你顯示的 60,可能波特率不對,也要檢查位數及校驗,沒有具體代碼不知道。
3、復位后出現 00 可以說是正常的,一般是硬體電路造成的,暫時不用理會。
uj5u.com熱心網友回復:
浮空那個我知道,但是復選推挽我感覺并不是像我們教材上這么配置的吧。。。
然后,USART配置的代碼如下:
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate=115200;
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_SENDBYTE(USART1,100);
發送資料的函式定義代碼 如下:
void USART_SENDBYTE(USART_TypeDef*pUSARTX,uint8_t data)
{ USART_SendData(USART1,data);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
}
波特率這些我也都設定的和串口助手相同,就感覺很奇怪
uj5u.com熱心網友回復:
GPIO_OType_PP 是推挽,看到PP就大概知道了,你可以看看 GPIO_OType_PP 的值是多少,再對照手冊看看是不是推挽的值。代碼看起來沒什么問題,除了 *pUSARTX 沒用上。有示波器或邏輯分析的話直接搭在MCU的PA9看看,USB轉串的芯片壞了也有可能。
uj5u.com熱心網友回復:
功能IO復用了啊,肯定要設定GPIO_PinAFConfig,這個每個單片機情況不一樣,就算同型號的不同封裝都不一樣,完全取決于規格書。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67467.html
標籤:單片機/工控
下一篇:水位傳感器
