02 STM32 07埋め込みシリアル通信

 

STM32シリアル通信(2つおよび3つのUSART UARTを含むF1シリーズ)

まず、SCMとPCのシリアル通信の目的と意義:

  その安定した性能、低コスト、強力なマイクロコントローラからの誕生以来、それが広く、スマート計測機器、産業機器、および家庭用電子消費者製品に使用されてきました。マイクロコントローラの入出力制御、直接キーパッド及びLCDディスプレイ等に接続されたほかに、一般的に、シリアルポート、およびホストコンピュータPCを介して連通しています。これは、リモートコントロールできるようになりますだけでなく、およびPC強力なデータ処理機能の利点だけでなく、フレンドリーな制御インターフェイスを取ることができます。一般的なPCを使用した場合には、マイクロコントローラを制御し、プラットフォームとしてのホストコンピュータのオペレーティングシステムに基づいており、利点フレンドリーなインターフェイス、および操作をプログラミングすることは比較的容易です。そのため、PC業界では重要な実用的な意義とシリアル通信を持っています。

  UART:ユニバーサル非同期レシーバ/トランスミッタUART

  USART:汎用同期非同期レシーバ/トランスミッタユニバーサル同期/非同期レシーバトランスミッタ

シリアル通信

  データ転送の方向を押します:

    、シンプレックス:データ伝送一方向にのみデータ伝送をサポート

 

    B、半二重:両方向で可能にするデータ伝送は、しかし、一度に、一方向のみにデータ伝送を可能にする、それは実際シンプレックスAハンドオフ方向であります

    Cは、全二重は:同時に両方向のデータ伝送を可能にし、したがって2つの全二重通信シンプレックス通信モードの組み合わせである、彼は別の受信および送信機能により送信及び受信装置を要求します。

                     

  シリアル通信による通信:

       、同期通信クロック信号の送信SPIとの同期、IIC通信インタフェース

    B、非同期通信:UART(同期非同期送受信機)することなく、クロック同期信号の送信、単一のバス

            

                   USART:1,2,3 UART:4,5

第二に、シリアル通信手順

                                           

  

三、STM32F10xプログラミング

  この手順は、照明LED2を「2」を送信する、STM32「1」、点灯LED1へシリアルポートを介して機能することです。同時に、コンピュータに戻って、マイクロコントローラ、受信したデータにデータを受け取ります

関数

 

1つの#include " my_usart.h " 
2の#include " stm32f10x.h " 
3  
4  ボイド My_USART1_Init(ボイド5  {
 6      GPIO_InitTypeDef KST_GPIO_Structure。           
7      USART_InitTypeDef KST_USART_Structure。
8      NVIC_InitTypeDef KST_NVIC_Structure。
9      
10      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA、ENABLE)。   // 使能GPIOA时钟
11      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1、ENABLE)。  // 使能USART1时钟
12  
13     = GPIO_Mode_AF_PP KST_GPIO_Structure.GPIO_Mode;          // 多重化プッシュプル出力
14      KST_GPIO_Structure.GPIO_Pin = GPIO_Pin_9;
 15      KST_GPIO_Structure.GPIO_Speed = GPIO_Speed_10MHz;
 16      (GPIOAと、&​​KST_GPIO_Structure)GPIO_Init;                   // 初期化GPIOA.9 
。17      
18である      KST_GPIO_Structure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     / / フローティング入力
19      KST_GPIO_Structure.GPIO_Pin = GPIO_Pin_10;
 20      KST_GPIO_Structure.GPIO_Speed = GPIO_Speed_10MHz;
 21である      (GPIOAと、&​​KST_GPIO_Structure)GPIO_Init;                     //初期GPIOA.10 
22は、     
23である      KST_USART_Structure.USART_BaudRate = 115200 ;              // ボーレートを設定115200 
24      KST_USART_Structure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // ハードウェアフロー制御なし
25      KST_USART_Structure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;     // 送受信モード
26である      KST_USART_Structure。 = USART_Parity_No USART_Parity;                 // パリティビットなし
27      KST_USART_Structure.USART_StopBits = USART_StopBits_1;             // ストップビット
28      KST_USART_Structure.USART_WordLength = USART_WordLength_8b;         //8ビットワード長モードデータ
29      
30      USART_Init(USART1、&KST_USART_Structure);                 //は、シリアルポートを初期化する1 
31である      USART_Cmd(USART1、ENABLE);                                 // シリアルポートイネーブル
32      USART_ITConfig(USART1、USART_IT_RXNE、イネーブル);             // 有効割り込み
33は     
34であります      = KST_NVIC_Structure.NVIC_IRQChannel USART1_IRQn;            
 35      KST_NVIC_Structure.NVIC_IRQChannelCmd = ENABLE;                 // IRQが通路イネーブル
36      KST_NVIC_Structure.NVIC_IRQChannelPreemptionPriority =を1。 ;      // 先取り優先順位1 
37 [     = KST_NVIC_Structure.NVIC_IRQChannelSubPriority 1 ;             // 子の優先順位1 
38である      NVIC_Init(&KST_NVIC_Structure);                     // 指定されたパラメータが初期化されているNVICレジスタ
39  }
 40  
41れる 空隙 USART1_IRQHandler(ボイド// COM1ターミナルサービス機能
42は 、{
 43は、     U8のRES。
 44れます     IF(USART_GetITStatus(USART1、USART_IT_RXNE))     // 受信割り込み
45      {
 46は          RES = USART_ReceiveData(USART1);             // 受信データ読み取り
47を         IF(RES ==' 1 ' 48          {
 49              GPIO_ResetBits(GPIOB、GPIO_Pin_5);         // LEDL照明
50              USART_SendData(USART1、RES);             //は、データ送信
51である         }
 52が         IFを RES ==(' 2 ' 53は         、{
 54である              。GPIO_ResetBits(GPIOE、 GPIO_Pin_5);         // LED2点灯
55              USART_SendData(USART1、RES);             // 送信データ
56          }
 57は、 
58      }
 59 }

 

主な機能

1つの#include " stm32f10x.h " 
2の#include " my_usart.h " 
3。の#include " led.h " 
4。 
5。 INTメイン(ボイド6。 {
 7。      LED_Init();                // 初期化LED 
。8      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   // 提供NVIC割り込みパケット2:2先取り優先順位、優先順位2応答
。9      My_USART1_Init();         // シリアルポートの初期化    
10      ながら1 );
 11。 }

 

おすすめ

転載: www.cnblogs.com/ksht-wdyx/p/11616831.html