{"id":224169,"date":"2014-05-26T20:18:02","date_gmt":"2014-05-26T16:18:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=224169"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=224169","title":{"rendered":"<span class=\"post_title\">\u0417\u0432\u0443\u043a\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u041f\u041a \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f USB \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0434\u043b\u044f UART \u043d\u0443\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a USB-COM. \u0415\u0441\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0435\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439 \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043b\u0430\u0442\u044b STM32VLDISCOVERY \u0432 \u041f\u041a \u0441 \u041e\u0421 Windows \u0425\u0420 \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u043d\u044b\u0439 \u0432\u0445\u043e\u0434. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0435 \u0447\u0438\u0441\u0442\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439, \u0430 \u0446\u0438\u0444\u0440\u043e-\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043b\u0430\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0447\u043a\u0430\u043c\u0438 \u0438\u0437 4-\u0445 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0440\u0430\u0437\u043d\u043e\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b, \u0447\u0435\u0440\u0435\u0437 \u0426\u0410\u041f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u0438\u043b\u0438\u0442\u0435\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0445 \u043a\u0430\u0440\u0442 \u2013 20 \u043a\u0413\u0446. \u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0430\u0447\u043a\u0438 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u043c \u0443\u0434\u0432\u043e\u0435\u043d\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 3 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043d\u0435\u0441\u0443\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 4-\u0445 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 45 \u043a\u0431\u0438\u0442\/\u0441.<\/p>\n<p>  \u041a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 STM32VLDISCOVERY: <a name=\"habracut\"><\/a><\/p>\n<pre><code class=\"cpp\">#include &quot;stm32f10x.h&quot; #define DAC_DHR12RD_Address      0x40007420 #define BUF_SIZE 640 \/* Init Structure definition *\/ DAC_InitTypeDef            DAC_InitStructure; DMA_InitTypeDef            DMA_InitStructure; TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure; \/* Private variables ---------------------------------------------------------*\/ uint32_t DualSine12bit[BUF_SIZE], Idx = 0, Idx2 = 0, Idx3 = 0, a1,a2,a3,a4, cc; int RR; double R;    \/* Private function prototypes -----------------------------------------------*\/ void RCC_Configuration(void)  {     \/* DMA1 clock enable *\/   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);   \/* GPIOA Periph clock enable *\/   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   \/* DAC Periph clock enable *\/   RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);   \/* TIM2 Periph clock enable *\/   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); }  void GPIO_Configuration(void) {   GPIO_InitTypeDef GPIO_InitStructure;   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;    GPIO_Init(GPIOA, &GPIO_InitStructure); }  void Timebase_Configuration(void) {   TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);   TIM_TimeBaseStructure.TIM_Period = 0x120; \/\/0x04;  0x150;            TIM_TimeBaseStructure.TIM_Prescaler = 0x01;          TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;       TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;     TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);\t \t \/* TIM2 TRGO selection *\/   TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);   \/* TIM2 enable counter *\/   TIM_Cmd(TIM2, ENABLE);\t }  void DAC_Configuration() { \t\/* DAC channel1 Configuration *\/   DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;   DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;   DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable; \/\/Enable;   DAC_Init(DAC_Channel_1, &DAC_InitStructure);   \/* DAC channel2 Configuration *\/   DAC_Init(DAC_Channel_2, &DAC_InitStructure);   \/* Enable DAC Channel1: Once the DAC channel1 is enabled, PA.04 is       automatically connected to the DAC converter. *\/   DAC_Cmd(DAC_Channel_1, ENABLE);   \/* Enable DAC Channel2: Once the DAC channel2 is enabled, PA.05 is       automatically connected to the DAC converter. *\/   DAC_Cmd(DAC_Channel_2, ENABLE);   \/* Enable DMA for DAC Channel2 *\/   DAC_DMACmd(DAC_Channel_2, ENABLE); }  void DMA_Configuration() { \t\/* DMA1 channel4 configuration *\/   DMA_DeInit(DMA1_Channel4);   DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit;\t   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;   DMA_InitStructure.DMA_BufferSize = BUF_SIZE;   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;   DMA_InitStructure.DMA_Priority = DMA_Priority_High;   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;   DMA_Init(DMA1_Channel4, &DMA_InitStructure);   \/* Enable DMA1 Channel4 *\/   DMA_Cmd(DMA1_Channel4, ENABLE); }  void Delay(__IO uint32_t nCount) {   for(; nCount != 0; nCount--); }  void Point(uint32_t kx, uint32_t ky, uint32_t ki) {    for (Idx2 = 0; Idx2 &lt; BUF_SIZE-10; Idx2++)    { \t DualSine12bit[Idx2+10] = DualSine12bit[Idx2];\t \t }  \t DualSine12bit[0] = 4095; \t DualSine12bit[1] = 4095;\t    DualSine12bit[2] = 0; \t DualSine12bit[3] = 0; \t \t\t  \t DualSine12bit[4] = 2096 + kx; \t DualSine12bit[5] = 2000 - kx;     \t DualSine12bit[6] = 2096 + ky; \t DualSine12bit[7] = 2000 - ky;  \t DualSine12bit[8] = 2096 + ki; \t DualSine12bit[9] = 2000 - ki; \t  }   \/* Private functions ---------------------------------------------------------*\/ int main(void) { \/* System Clocks Configuration *\/ \t   RCC_Configuration();    \/* Once the DAC channel is enabled, the corresponding GPIO pin is automatically       connected to the DAC converter. In order to avoid parasitic consumption,       the GPIO pin should be configured in analog *\/     GPIO_Configuration();    \/* TIM2 Configuration *\/   \/* Time base configuration *\/   Timebase_Configuration();     \/* DAC channel1 Configuration *\/   DAC_Configuration();     \/* DMA1 channel4 configuration *\/ \tDMA_Configuration();  R = 1; RR=1; a1 = 2023; a2 = 1000;\ta3 = 100; a4 = 900;   while (1)   {   for (Idx = 0; Idx &lt; 32*32; Idx++) \t\t{ \t\tIdx3 = Idx\/32;\t \t\tPoint((Idx-Idx3*32)*50,Idx3*50,Idx\/32*50); \t\t}\t   } }  <\/code><\/pre>\n<p> <habracut\/><\/p>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u041f\u041a: <habracut\/><\/p>\n<pre><code class=\"cpp\">#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;fstream.h&gt; #include &lt;iomanip.h&gt; #include &lt;windows.h&gt; #include &lt;math.h&gt; #include &lt;vcl.h&gt; #include &lt;mmsystem.h&gt; #include &quot;mainF_dbl.h&quot; #pragma hdrstop #pragma package(smart_init) #pragma resource &quot;*.dfm&quot; #define INP_BUFFER_SIZE 16384 #define SAMPLE_RATE     192000  TForm1 *Form1; static HWAVEIN hWaveIn = NULL; static WAVEHDR WaveHdr1, WaveHdr2; static WAVEFORMATEX waveformat ; static unsigned short Buffer1[INP_BUFFER_SIZE], Buffer2[INP_BUFFER_SIZE], saveBuffer[INP_BUFFER_SIZE]; static signed int RR, saveBuffer2[INP_BUFFER_SIZE]; static BOOL bEnding, bGraph, flag; BOOL bShutOff; long int RR_max, RR_min, LLL; int ix, iy, iz, k, kx, ky, m, kp ;   void CALLBACK waveInProc1(HWAVEIN hwi, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) {    switch(uMsg) {    case WIM_OPEN: break;     case WIM_DATA: CopyMemory (saveBuffer, ((PWAVEHDR) dwParam1)-&gt;lpData, ((PWAVEHDR) dwParam1)-&gt;dwBytesRecorded) ;     if (bEnding){ waveInReset (hWaveIn); waveInClose (hWaveIn); return; }    waveInAddBuffer (hwi, (PWAVEHDR) dwParam1, sizeof (WAVEHDR)) ; \/\/ Send out a new buffer    break;     case WIM_CLOSE:    waveInUnprepareHeader (hWaveIn, &WaveHdr1, sizeof (WAVEHDR)) ;    waveInUnprepareHeader (hWaveIn, &WaveHdr2, sizeof (WAVEHDR)) ;    } }  \/\/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx void __fastcall TForm1::startButtonClick(TObject *Sender) { bGraph=false; } \/\/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx void __fastcall TForm1::formDestroy(TObject *Sender) {    bEnding=false; } \/\/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx void __fastcall TForm1::Button1Click(TObject *Sender) {   bGraph=true;  }  \/\/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx __fastcall TForm1::TForm1(TComponent* Owner)    : TForm(Owner) {    waveformat.wFormatTag      = WAVE_FORMAT_PCM ;    waveformat.nChannels       = 1; \/\/2 ;    waveformat.wBitsPerSample  = 16 ;    waveformat.nSamplesPerSec  = SAMPLE_RATE ;    waveformat.nBlockAlign     = waveformat.nChannels * (waveformat.wBitsPerSample \/ 8);    waveformat.nAvgBytesPerSec = waveformat.nBlockAlign * waveformat.nSamplesPerSec;    waveformat.cbSize          = 0 ;     if (waveInOpen (&hWaveIn, WAVE_MAPPER, &waveformat, (DWORD)waveInProc1, 0, CALLBACK_FUNCTION)){       Application-&gt;MessageBox( &quot;000000000&quot;,&quot;Error&quot;,MB_OK );       return;    }     bShutOff=false; \/\/ Set up headers and prepare them     WaveHdr1.lpData          = (BYTE *)Buffer1 ;    WaveHdr1.dwBufferLength  = INP_BUFFER_SIZE*2 ;    \/\/    WaveHdr1.dwBytesRecorded = 0 ;    WaveHdr1.dwUser          = 0 ;    WaveHdr1.dwFlags         = 0 ;    WaveHdr1.dwLoops         = 1 ;    WaveHdr1.lpNext          = NULL ;    WaveHdr1.reserved        = 0 ;    waveInPrepareHeader (hWaveIn, &WaveHdr1, sizeof (WAVEHDR)) ;     WaveHdr2.lpData          = (BYTE *)Buffer2 ;    WaveHdr2.dwBufferLength  = INP_BUFFER_SIZE*2 ;    \/\/    WaveHdr2.dwBytesRecorded = 0 ;    WaveHdr2.dwUser          = 0 ;    WaveHdr2.dwFlags         = 0 ;    WaveHdr2.dwLoops         = 1 ;    WaveHdr2.lpNext          = NULL ;    WaveHdr2.reserved        = 0 ;    waveInPrepareHeader (hWaveIn, &WaveHdr2, sizeof (WAVEHDR)) ;     waveInAddBuffer (hWaveIn, &WaveHdr1, sizeof (WAVEHDR)) ;    waveInAddBuffer (hWaveIn, &WaveHdr2, sizeof (WAVEHDR)) ;    waveInStart (hWaveIn) ;     bGraph=true; bEnding = FALSE; }  void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (bGraph){            kp++;            if (kp&gt;20){kp=0; Canvas-&gt;Brush-&gt;Color = Color; Canvas-&gt;FillRect(Rect(0,0,512,512));} k=0; m=0; RR_min=0; RR_max=0; kx=0; ky=0;    for(int LLL=0; LLL&lt;INP_BUFFER_SIZE; LLL++)    { short)(saveBuffer[LL*2]);      RR = (signed short)(saveBuffer[LLL]);      if (RR &gt; 0)        {         if(RR_max &lt; RR) RR_max = RR;         if((kx&gt;6)&&(RR_min&lt;30000))      { \/\/&&(k==0)){                                   m=0;                                   }         if(RR_min &lt; 0) {                         if (m==1) ix = -RR_min*16\/1024;                         if (m==2) iy = -RR_min*16\/1024;                         if (m==3) iz = -RR_min*4\/512;                        }        flag=false;    kx=0;        RR_min = 0; ky++;        }       if (RR &lt; 0)        {         if(RR_min &gt; RR) RR_min = RR;         if (ky&gt;6){                       if (m==3) {Canvas-&gt;Brush-&gt;Color = TColor(RGB(iz, iz, iz));                       Canvas-&gt;FillRect(Rect(ix,iy,ix+16,iy+16));}                        }        if(!flag) m++;        RR_max = 0;        flag=true;  ky=0;        kx++;        }     }   } }  <\/code><\/pre>\n<p> <habracut\/><\/p>\n<p>  \u041d\u0430 \u0444\u043e\u0440\u043c\u0435 2 \u043a\u043d\u043e\u043f\u043a\u0438 \u00abStop\u00bb \u0438 \u00abRun\u00bb, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435 \u0438\u0437 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0445 \u0438 y \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0445 2-\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432, \u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043e\u0439 3-\u0433\u043e. \u041f\u043b\u0430\u0442\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u043c, \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u041f\u041a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 jack \u0434\u043b\u044f \u043c\u043e\u043d\u043e, \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b STM32VLDISCOVERY \u0432\u044b\u0432\u043e\u0434 PA.04, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u044d\u043c\u0438\u0442\u0442\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u043b\u044c (\u0432 STM32VLDISCOVERY \u0432\u044b\u0445\u043e\u0434 \u0426\u0410\u041f \u0432\u044b\u0441\u043e\u043a\u043e\u043e\u043c\u043d\u044b\u0439 ) \u0438 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440).<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/8b2\/b4c\/a2d\/8b2b4ca2d8614a099a1b6fc9eab16be9.jpg\"\/><\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0435 \u0432 \u041f\u041a \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u0438\u0437 STM32VLDISCOVERY \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u043f\u043e\u043b\u0435 32\u044532 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u0441 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u043c \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437):<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/c9e\/6bc\/fa3\/c9e6bcfa3ba343d98bf1085b38fea61a.jpg\"\/> \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/224169\/\"> http:\/\/habrahabr.ru\/post\/224169\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u041f\u041a \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f USB \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0434\u043b\u044f UART \u043d\u0443\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a USB-COM. \u0415\u0441\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0435\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439 \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043b\u0430\u0442\u044b STM32VLDISCOVERY \u0432 \u041f\u041a \u0441 \u041e\u0421 Windows \u0425\u0420 \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u043d\u044b\u0439 \u0432\u0445\u043e\u0434. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0435 \u0447\u0438\u0441\u0442\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439, \u0430 \u0446\u0438\u0444\u0440\u043e-\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043b\u0430\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0447\u043a\u0430\u043c\u0438 \u0438\u0437 4-\u0445 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0440\u0430\u0437\u043d\u043e\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b, \u0447\u0435\u0440\u0435\u0437 \u0426\u0410\u041f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u0438\u043b\u0438\u0442\u0435\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0445 \u043a\u0430\u0440\u0442 \u2013 20 \u043a\u0413\u0446. \u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0430\u0447\u043a\u0438 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u043c \u0443\u0434\u0432\u043e\u0435\u043d\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 3 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043d\u0435\u0441\u0443\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 4-\u0445 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 45 \u043a\u0431\u0438\u0442\/\u0441.<\/p>\n<p>  \u041a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 STM32VLDISCOVERY: <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-224169","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=224169"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224169\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=224169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=224169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=224169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}