1. 程式人生 > >AD+DMA+USART實驗中的收穫和總結

AD+DMA+USART實驗中的收穫和總結

  • 由於實驗室用的是USART3介面,但是在基地實驗時,由於沒有RS232,只能換到USART1,進行實驗。(在交作業的時候,記得要再換回去)

在這個過程中,遇到困難,用串列埠軟體傳送資料時無響應,應該意味著我的資料沒有發成功。

仔細排查,發現,由串列埠1到串列埠3,需要改動以下部分。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//USART1

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART1, ENABLE);//USART3

      //---- USART1_TX   PA9     ----------------
USART_GPIO_Init.GPIO_Pin = GPIO_Pin_9; USART_GPIO_Init.GPIO_Speed = GPIO_Speed_50MHz; USART_GPIO_Init.GPIO_Mode = GPIO_Mode_AF_PP; //複用推輓輸出 GPIO_Init(GPIOA, &USART_GPIO_Init); //初始化PA9 //-----USART1_RX PA10 ------------- USART_GPIO_Init.GPIO_Pin = GPIO_Pin_10; USART_GPIO_Init.GPIO_Mode
= GPIO_Mode_IN_FLOATING; //浮空輸入 GPIO_Init(GPIOA, &USART_GPIO_Init); //初始化PA10 //---------------------------------------------------------------------------------- //---- USART3_TX PB10 ---------------- USART_GPIO_Init.GPIO_Pin = GPIO_Pin_10; USART_GPIO_Init.GPIO_Speed = GPIO_Speed_50MHz; USART_GPIO_Init.GPIO_Mode
= GPIO_Mode_AF_PP; //複用推輓輸出 GPIO_Init(GPIOB, &USART_GPIO_Init); //初始化PA9 //-----USART3_RX PB11 ------------- USART_GPIO_Init.GPIO_Pin = GPIO_Pin_11; USART_GPIO_Init.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入 GPIO_Init(GPIOB, &USART_GPIO_Init); //初始化PA10

USART1需要配置PA9及PA10
由於USART屬於可選功能項
所以TX要設定成GPIO_Mode_AF_PP;,即複用推輓輸出
RX用於資料輸入,被設定成浮空輸入

USART2同理。

  • 在使用TIM的時候要在RCCset函式中開啟使能
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);