1 空隙 USART3_Configuration(ボイド)// 串口3配置--- S 2 { 3 DMA_InitTypeDef DMA_InitStructure。 4 USART_InitTypeDef USART_InitStructure。 5 GPIO_InitTypeDef GPIO_InitStructure。 6 NVIC_InitTypeDef NVIC_InitStructure。 7 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3、ENABLE)。 8 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2、ENABLE); 9 // USART1 10 // TX 11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10。 12GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP。 13 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz。 14 GPIO_Init(GPIOB、&GPIO_InitStructure)。 15 // RX 16 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11。 17 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD。 18 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz。 19 GPIO_Init(GPIOB、&GPIO_InitStructure)。 20 21 DMA_InitStructure.DMA_PeripheralBaseAddr =(のuint32_t)&(USART3-> RT)。 22 DMA_InitStructure.DMA_MemoryBaseAddr =(のuint32_t)_code_rece。 23 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC。 24 DMA_InitStructure.DMA_BufferSize = 4000 。 25 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable。 26 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable。 27 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte。// ハーフワード 28 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte。 29 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular。// DMA_Mode_Normal 30DMA_InitStructure.DMA_Priority = DMA_Priority_Medium。// DMA_Priority_Low DMA_Priority_Medium DMA_Priority_High 31 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable。 32 DMA_Init(DMA1_Channel3、&DMA_InitStructure)。 33 34 DMA_InitStructure.DMA_PeripheralBaseAddr =(のuint32_t)&(USART3-> DR)。 35 DMA_InitStructure.DMA_MemoryBaseAddr = (のuint32_t)_send_data。 36 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST。 37 DMA_InitStructure.DMA_BufferSize = 14 。 38 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable。 39 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable。 40 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte。// ハーフワード 41 DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_Byte。 42 DMA_InitStructure.DMA_Mode = DMA_Mode_Normal。// DMA_Mode_Normal 43 DMA_InitStructure.DMA_Priority = DMA_Priority_Medium。// DMA_Priority_Low DMA_Priority_Medium DMA_Priority_High 44 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable。 45 DMA_Init(DMA1_Channel2、&DMA_InitStructure)。 46 47 USART_OverSampling8Cmd(USART3、ENABLE)。 48 USART_InitStructure.USART_BaudRate = 460800 。 49 USART_InitStructure.USART_WordLength = USART_WordLength_8b。 50 USART_InitStructure.USART_StopBits = USART_StopBits_1。 51 USART_InitStructure.USART_Parity = USART_Parity_No。 52 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None。 53 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 54 USART_Init(USART3、&USART_InitStructure)。 55 56 // NVIC设置、使能中断 57NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 選択割り込みパケット1。 58 59 NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; // 選択割り込みシリアル3 60 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0 ; // 。プリエンプティブ割り込み優先レベル設定1 61が NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0 ; / / 。割込み優先度に応じた1 62である = ENABLE NVIC_InitStructure.NVIC_IRQChannelCmd; // 割り込みイネーブル 63がある NVIC_Init(&NVIC_InitStructure); 64 USART_ITConfig(USART3、USART_IT_IDLE、ENABLE); // 割り込みイネーブル 65 66 USART_DMACmd(USART3、USART_DMAReq_Rx、ENABLE)。 67 USART_DMACmd(USART3、USART_DMAReq_Tx、ENABLE)。 68 DMA_Cmd(DMA1_Channel3、ENABLE)。 69 USART_Cmd(USART3、ENABLE)。 70 USART3-> SR; 71 USART3-> DR。 72 } 73 74 DmaSendDataProc(DMA1_Channel2、14 )。 75 // 开启一次DMA传输 76 空隙 DmaSendDataProc(DMA_Channel_TypeDef * DMA_Streamx、U16のndtr) 77 { 78 79 DMA_Cmd(DMA_Streamx、DISABLE)。// 关闭DMA传输 80 81DMA_SetCurrDataCounter(DMA_Streamx、ndtr); // データトラフィック 82 83 DMA_Cmd(DMA_Streamx、ENABLE); // オープンDMA転送 84 85 } 86 空隙 USART3_IRQHandler(ボイド) // クライアントデータによって送信された 87 { 88 IF(USART_GetFlagStatus(USART3 、USART_FLAG_IDLE)== SET)// RxNE受信フラグバイト、 89 { 90 DMA_Cmd(DMA1_Channel3、DISABLE); // 閉じるDMA出力 91は 92 usart2_num = 2000 - DMA1_Channel3 - > CNDTR; // 読み取りを受けますバイト 93 // 処理データ 94 DMA1_Channel3-> CNDTR = 2000 ; // リフィル 95 DMA_Cmd(DMA1_Channel3、ENABLE); // オープンDMA転送 96 } 97 98 USART_ClearITPendingBit(USART3、USART_IT_IDLE); // クリア受信割り込みフラグ 99 USART3- > SR; 100 USART3-> DR; 101 102 }