1 / * *********シリアル初期化関数********* * / 2 // 結合:ボー 。3 ボイドMy_USART1_Init(U32に結合) 。4 { 5。 // 構造の定義変数 6 GPIO_InitTypeDef GPIO_InitStructure; 7 USART_InitTypeDef USART_InitStructure; 8 NVIC_InitTypeDef NVIC_InitStructure; 9 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA、ENABLE); // クロックGPIOAイネーブル 10 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1、ENABLE); //はUSART1クロックをイネーブルには(シリアル1および6は、ハングでありますAPB2オンなど) 。11 // 対応するピンは、多重化されマッピングされた 12 (GPIOA、GPIO_PinSource9、GPIO_AF_USART1有する)GPIO_PinAFConfig; 13であり ;(GPIOA、GPIO_PinSource10、GPIO_AF_USART1有する)GPIO_PinAFConfig 14 // GPIOポートモード 15 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; // GPIOA10とGPIOA9 16 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; // 複合機能を持つ 17。 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHzの 18である GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // プッシュプル出力多重化 。19 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // プル 20(GPIOA、&GPIO_InitStructure有する)GPIO_Init; // 初期化PA9、PA10 21は、 // ポートの初期化パラメータ 22で結合= USART_InitStructure.USART_BaudRate; //は、一般的に9600に設定され、 23である USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 語長は8ビットである 24 USART_InitStructure。 = USART_StopBits_1 USART_StopBits; // ストップビット 25 USART_InitStructure.USART_Parity = USART_Parity_No; // パリティビットなかっ 26で USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // ハードウェアフロー制御なし 27= USART_Mode_Rx USART_InitStructure.USART_Mode | USART_Mode_Tx; // トランシーバ 28 USART_Init(USART1、&USART_InitStructure); // シリアルポートを初期化する1。 29 30 USART_Cmd(USART1を、ENABLE); // シリアルポートをイネーブル1。 31である USART_ClearFlag(USART1、USART_FLAG_TC); // クリアデータ伝送識別子の完了 32 ; USART_ITConfig(USART1、USART_IT_RXNE、ENABLE)// ターンは、割り込みが(典型的には、PCとの間の通信を可能にし、この缶のみライン)が生成されるシフトレジスタのデータが受け付けた場合に、受信 33 //が必要に応じて割り込みをイネーブル初期NVIC 34 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // USART1割り込み設定 35 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3 ; // 。先取り優先順位3 36 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3 ; // 。レスポンス優先順位3 37 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // IRQが通路イネーブル 38が NVIC_Init(&NVIC_InitStructure); // 指定されましたVICパラメータ初期化レジスタ、 39 } 40 41である / * *********割り込みハンドラ********* * / 42である ボイド USART1_IRQHandler(ボイド)// ポート1つの割り込みサービスルーチン 43 { 44は、 IF(!USART_GetITStatus(USARTy、USART_IT_RXNE)がリセット=)// データを登録した場合 45 { 46 / * からバイトを読み出すレジスタ受信* / 47 RxBuffer1 [RxCounter1 ++] = USART_ReceiveData(USART1)を、 48 } 49 IF(!USART_GetITStatus(USARTy、USART_IT_TXEが)= RESET)の 50 { 51は USART_SendData(USARTy、TxBuffer1 [TxCounter1 ++ ]); 52である } 53れます }
主な機能:
1 INTメイン(ボイド) 2 { 3。 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 優先パケット割込みシステム設定2 。4 My_USART1_Init(); 5 ながら(1 ) 。6 }