STM32F3DISCOVERY, рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░, рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░реНрд╕ рдФрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬрд╛рджреВ

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рдЦрд╛рдмрд░реЛрд╡рдЪрдиред рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдВрддрд┐рдо рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рдВ, "рдбреА" рдЕрдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рд╢рдмреНрдж рд╣реИ)ред

рдХрд╛рдо рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рдореЛрдмрд╛рдЗрд▓ рд░реЛрдмреЛрдЯ рдХреЛ рд╕рдВрд╡реЗрджрди рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдерд╛ред рдЗрди рдмрдбрд╝реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдкреАрдЫреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝рд╛ рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдирд╣реАрдВ рд╣реИред

рдмрд┐рдВрджреБ рдХреЗ рдХрд░реАрдмред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░, рд╕реЗрдВрд╕рд░ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ, рдПрдХ рдХрджрдо рдЗрдВрдЬрди рд╣реИ, рдФрд░ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗрдВрд╕рд░ (рдПрдХреНрд╕реАрд▓реЗрд░реЛрдореАрдЯрд░ рдФрд░ рдЧрд╛рдпрд░реЛрд╕реНрдХреЛрдк) рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝реЗ, рдПрдХ рдкреАрд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬреЗрдВ, рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЗрдВрдЬрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдЗрдВрдЬрди рдХреЛ рдШреБрдорд╛рдПрдВред

рдЦрд░реАрдж:


рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХреЛрдВ рдХреЛ рдЪреБрдирд╛:

тАв STM32F3DISCOVERY, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдФрд░ рдЬрд╛рдЗрд░реЛрд╕реНрдХреЛрдк рдкрд╣рд▓реЗ рд╕реЗ рдмреЛрд░реНрдб рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рд╣реИрдВред рдФрд░ рдПрд╕рдЯреАрдПрдо 32 рдХреЗ рддрд╣рдд рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рддреИрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдЬреЛ рдХрд╛рд░реНрдп рдХреЛ рдЖрд╕рд╛рди (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди) рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
тАв рдбрд┐рдЬрд┐рдЯрд▓ рдПрдХреНрд╕реАрд▓реЗрд░реЛрдореАрдЯрд░ LIS331DH, 3-рдЕрдХреНрд╖, рдЙрдЪреНрдЪ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ (2 рдЬреА рд╕реЗ 8 рдЬреА рддрдХ)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдЧрднрдЧ рдкреВрд░реА рдПрд▓рдЖрдИрдПрд╕ * рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдлрд┐рдЯ рдХрд░рддреА рд╣реИред
тАв рдХрджрдо рдЗрдВрдЬрди FL42STH25-0404A, рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ, рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рднрд╛рдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреНрдпрд╛ рдкрдбрд╝рд╛ рдерд╛, рдЬреЛ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ STM32F3 рдкрд░ рд▓реЗрдЦ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЦреЛрдЬ рдХреА, рдФрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ рдХрд┐ рдпрд╣ рдЙрддрдирд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, STM32F4 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╣реИрдВ)ред рд╣рд╛рдВ, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣рд╛рдБ рд▓рдЧрднрдЧ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкрд░рд┐рдзреАрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдХрд╛рдо рдЕрд▓рдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ 5 рд╕реЗрдВрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдереЛрдбрд╝рд╛ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ:


рд╣рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ STM32F3DISCOVERY рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреАрд╕реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдбреЗрдореЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рдЪрд▓рди рд╣реЛрдиреЗ рдкрд░ рд▓реИрдВрдк рдЭрдкрдХрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╕реЗрдВрд╕рд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдЪрд┐рд▓реНрд▓рд╛рддреЗ рд╣реИрдВ "рд╣реБрд░реНрд░реЗ!" рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдЫрд╡рд┐

рдФрд░ рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдмрд╛рд╣рд░реА рд╕реЗрдВрд╕рд░ (рдСрди-рдмреЛрд░реНрдб рдирд╣реАрдВ) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдорд┐рд▓рд╛рдк рдПрдХреНрд╕рд▓, рдХрдиреЗрдХреНрдЯред рдзреБрд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ: SPI рдФрд░ I2Cред рдореИрдВрдиреЗ рдПрд╕рдкреАрдЖрдИ рдкрд░ рд░рд╣рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ATTINY2313 рдкрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдерд╛ (рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛) рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ SPI рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдЗрд╕реЗ рдЖрд╕рд╛рди рдЪрд╛рд╣рддрд╛ рдерд╛, рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдирд┐рдХрд▓рд╛



рдХрдиреЗрдХреНрд╢рди: MISO - MISO, MOSI - MOSI, SCK - SCK, CS рдХреЛ рдХрд┐рд╕реА рднреА рдкреИрд░ рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЦреАрдВрдЪреЗрдВрдЧреЗред
рдкрд╣рд▓реЗ рд╣рдореЗрдВ SPI рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, SPI2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ SPI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧрд╛рдЗрд░реЛрд╕реНрдХреЛрдк рдХрд╛рд░реНрдп (рдпрд╛ рдПрдХреНрд╕рд▓, рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ):
void SPI2_Configuration(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_5); // SCK GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_5); // MISO GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_5); // MOSI SPI_InitTypeDef SPI_InitStructure; SPI_StructInit(&SPI_InitStructure); SPI_I2S_DeInit(SPI2); SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI2, &SPI_InitStructure); /* Configure the Priority Group to 1 bit */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Configure the SPI interrupt priority */ NVIC_InitStructure.NVIC_IRQChannel = SPI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Initialize the FIFO threshold */ SPI_RxFIFOThresholdConfig(SPI2, SPI_RxFIFOThreshold_QF); SPI_Cmd(SPI2, ENABLE); } 

WHO_AM_I рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ:
getValue = getRegisterValue(&AXELx, 0x0F);
рдЬрд╣рд╛рдБ
 char getRegisterValue(AXEL_TypeDef* AXELx, char address) { AXELx->CS_Port->BRR = AXELx->CS_Pin; SPI_I2S_SendData16(SPI2, 0x8000|(address<<8)); while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)); AXELx->CS_Port->BSRR = AXELx->CS_Pin; return SPI_I2S_ReceiveData16(SPI2); } 

рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╕рдордп рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХреЗ рд╕реАрдПрд╕ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдПрд╕ рдХреЛ рдЬрдореАрди рдкрд░ рджрдмрд╛рдиреЗ рд╕реЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреА (рдпрд╣ рдЗрд╕ рдХреНрд╖рдг рдХреЗ рдХрд╛рд░рдг рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЧрдВрднреАрд░ рдкреНрд▓рдЧ рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рд╕рд╛рде рд╣реА рд╕рднреА рдПрдХреНрд╕рд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рднрд╛рдЧред рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рд▓рдЧрднрдЧ рджреЛ рд╕рдкреНрддрд╛рд╣ рддрдХ рдореЗрд░рд╛ рдХрд╛рдо рд░реЛрдХ рджрд┐рдпрд╛ред O_o)ред рдлрд┐рд░ рд╣рдо рдЙрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдкрддрд╛ рднреЗрдЬрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ (рдкрдврд╝реЗрдВ / рд▓рд┐рдЦреЗрдВ), рд╣рдо рджреВрд╕рд░реА рдмрд╛рдЗрдЯ рдкрдврд╝рддреЗ рд╣реИрдВ рдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдЦреИрд░, рд╣рдо рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВрдЧреЗ:
 void setRegisterValue(AXEL_TypeDef* AXELx, char address, char data) { AXELx->CS_Port->BRR = AXELx->CS_Pin; SPI_I2S_SendData16(SPI2,((short)address<<8)|(short)data); while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)); AXELx->CS_Port->BSRR = AXELx->CS_Pin; SPI_I2S_ReceiveData16(SPI2); } 

рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрд╕рд░ рдХреЛ рднреА рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН, рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд╕рднреА рддреАрди рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдкрдврд╝реЗрдВрдЧреЗ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВрдЧреЗ (рд╣рдо рдирд┐рдпрдВрддреНрд░рдг рд╢рдмреНрдж рдХреЗ рдЕрд░реНрде рдФрд░ рдЗрд╕рдХреЗ рдЧрдарди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкрддреНрд░рдХ рдореЗрдВ рдПрдХреНрд╕рд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ)ред
 void Axel_Init(AXEL_TypeDef* AXELx) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable Axel CS Pin */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Pin = AXELx->CS_Pin; GPIO_Init(AXELx->CS_Port, &GPIO_InitStructure); setRegisterValue(AXELx, 0x20, 0x27); } 

рд╕реЗрдВрд╕рд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╣реБрд░реНрд░реЗ! рдЕрдм рдЪрд▓реЛ рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

рдЪреБрдкрдЪрд╛рдк рдЪрд▓реЗ рдЬрд╛рдирд╛ - рддреБрдо рдЬрд╛рд░реА рд░рдЦреЛрдЧреЗ



рдПрд╕рдбреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд╛рд▓рдХ VNH3SP30 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдЪ рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдХреА рджреЛ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ 2 рд╢реЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдШреБрдорд╛рд╡рджрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдореЛрдЯрд░ - 6 рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ (рдПрдХ рд╡рд╛рд╣рдХ рдЖрд╡реГрддреНрддрд┐ рдФрд░ 2 рджрд┐рд╢рд╛рдУрдВ) рд╕реЗ 3 рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
 #define A_PULSE_PORT GPIOB #define A_PULSE_PIN GPIO_Pin_2 #define A_DIR1_PORT GPIOB #define A_DIR1_PIN GPIO_Pin_0 #define A_DIR2_PORT GPIOE #define A_DIR2_PIN GPIO_Pin_8 #define B_PULSE_PORT GPIOE #define B_PULSE_PIN GPIO_Pin_12 #define B_DIR1_PORT GPIOE #define B_DIR1_PIN GPIO_Pin_10 #define B_DIR2_PORT GPIOE #define B_DIR2_PIN GPIO_Pin_14 

рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:
 void StepMotorSetup() { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOE, ENABLE); /*       */ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Pin = A_PULSE_PIN; GPIO_Init(A_PULSE_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_PULSE_PIN; GPIO_Init(B_PULSE_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = A_DIR1_PIN; GPIO_Init(A_DIR1_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_DIR1_PIN; GPIO_Init(B_DIR1_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = A_DIR2_PIN; GPIO_Init(A_DIR2_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_DIR2_PIN; GPIO_Init(B_DIR2_PORT, &GPIO_InitStructure); } 

рдореЛрдЯрд░ рджреНрд╡рд╛рд░рд╛ 1 рдХрджрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рдо рдореЗрдВ рдореЛрдЯрд░ рд╡рд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрдд рд▓рд╛рдЧреВ рдХрд░реЗрдВ

рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрдд рдореБрдЦреМрдЯрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 u8 WireConFullStep[4][4] = {{1, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 1}}; 

рдФрд░ рдЕрдм рд╣рдо рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджрд┐рд╢рд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдореБрдЦреМрдЯрд╛ рдкрд░ рдмрд╛рдИрдкрд╛рд╕ рдХреА рджрд┐рд╢рд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:
 void DoStep(int index) { GPIO_ResetBits(A_DIR1_PORT, A_DIR1_PIN); GPIO_ResetBits(A_DIR2_PORT, A_DIR2_PIN); GPIO_ResetBits(B_DIR1_PORT, B_DIR1_PIN); GPIO_ResetBits(B_DIR2_PORT, B_DIR2_PIN); GPIO_ResetBits(A_PULSE_PORT, A_PULSE_PIN); GPIO_ResetBits(B_PULSE_PORT, B_PULSE_PIN); if(WireConFullStep[index][0] == 1) { GPIO_SetBits(A_DIR1_PORT, A_DIR1_PIN); GPIO_SetBits(A_PULSE_PORT, A_PULSE_PIN); } if(WireConFullStep[index][1] == 1) { GPIO_SetBits(A_DIR2_PORT, A_DIR2_PIN); GPIO_SetBits(A_PULSE_PORT, A_PULSE_PIN); } if(WireConFullStep[index][2] == 1) { GPIO_SetBits(B_DIR1_PORT, B_DIR1_PIN); GPIO_SetBits(B_PULSE_PORT, B_PULSE_PIN); } if(WireConFullStep[index][3] == 1) { GPIO_SetBits(B_DIR2_PORT, B_DIR2_PIN); GPIO_SetBits(B_PULSE_PORT, B_PULSE_PIN); } } 


рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╡рд╛рдорд╛рд╡рд░реНрдд рдЪрд░рдг рдФрд░ рдПрдХ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 void CWStep() { DoStep(CurIndex); CurIndex+=1; if(CurIndex > 3) CurIndex = 0; } void CCWStep() { DoStep(CurIndex); CurIndex-=1; if(CurIndex < 0) CurIndex = 3; } 

рдФрд░ рдЕрдм рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЗрдВрдЬрди рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рд╕рд╣реА рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдШреБрдорд╛рдПрдВрдЧреЗ:
 void Steps(u8 dir, s16 n) { s16 i = 0; for(i = 0; i < n; i++) { if(dir) { CWStep(); udelay(15000); } else { CCWStep(); udelay(15000); } } } 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╕рдордп рд╡рд┐рд▓рдВрдм рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдЧрд▓реЗ рдХрджрдо рдкрд░ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдХрджрдо рдЙрдард╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛред

рд╣рдорд╛рд░реЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рд╢рдХреНрддрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИ рдФрд░ рд╣рдо рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ - рдПрдХ рдкреАрд╕реА рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рдФрд░ рдПрдХ рдкреАрд╕реА рд╕реЗ рдПрд╕рдбреА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ред

USB рд╕рдВрдЪрд╛рд░


USB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ USB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ VirtualComport_Loopback (STM32 USB-FS-Device рд╡рд┐рдХрд╛рд╕ рдХрд┐рдЯ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдЦреЛрдЬреЗрдВ)ред рдЗрд╕ рдбреЗрдореЛ рдореЗрдВ, рдкреАрд╕реА рд╕реЗ рдЬреБрдбрд╝реЗ stm32 рдХреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдХреЙрдо рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рднреА рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬ рджрд┐рдпрд╛ред рдЦреИрд░, рдпрд╣ рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ! рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рд╡рд┐рдирд┐рдордп рдФрд░ рд╡реЙрдЗрд▓рд╛ рдХреЗ рд▓реВрдк рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ .Net рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЪреБрдЕрд▓ рдХреЙрдо рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдпрджрд┐ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рдЧрд╛рддрд╛рд░ рд╕реЗрдВрд╕рд░ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреАрд╕реА рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ (рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╣рд░рдХреНрдпреВрд▓рд┐рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдкреЛрд░реНрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЛрд▓рд╛)ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕реЗрдВрд╕рд░ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдФрд░ рдПрдХ рдкреАрд╕реА рдХреЗ рд╕рд╛рде рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдкрд╣рд▓реЗ рд╣реА рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рдерд╛ред

рджрд░рдЕрд╕рд▓, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛:
USB рдЖрд░рдВрднреАрдХрд░рдг:
  Set_System(); Set_USBClock(); USB_Interrupts_Config(); USB_Init(); 

рдЬрдм рддрдХ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:
  while (1) { /* Data exhange via USB */ if (bDeviceState == CONFIGURED && UserButtonPressed != 0) { тАж } } 

UserButton рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░:
 __IO uint32_t i =0; extern __IO uint32_t UserButtonPressed; void EXTI0_IRQHandler(void) { if ((EXTI_GetITStatus(USER_BUTTON_EXTI_LINE) == SET)&&(STM_EVAL_PBGetState(BUTTON_USER) != RESET)) { /* Delay */ for(i=0; i<0x7FFFF; i++); /* Wait for SEL button to be pressed */ while(STM_EVAL_PBGetState(BUTTON_USER) != RESET); /* Delay */ for(i=0; i<0x7FFFF; i++); UserButtonPressed++; if (UserButtonPressed > 0x2) { UserButtonPressed = 0x0; } /* Clear the EXTI line pending bit */ EXTI_ClearITPendingBit(USER_BUTTON_EXTI_LINE); } } 


рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд┐рдирдЖрдЙрдЯ рдХреЗ рдХрдИ рдкрд╣рд▓реБрдУрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ, рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдгреЛрдВ (рдПрдбреАрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛) рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрдХрдЯреНрдареЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЛ рд╕реМрдВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рднрд╛рд╡реА рдкреАрдврд╝реА рдЗрд╕ рдХрд╛рдо рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдЧреА рдФрд░ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдЧреА), рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореИрдВ рдЗрд╕рдХреЗ рдХрд╛рдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХреБрдЫ рддрд╕реНрд╡реАрд░реЗрдВ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлреЛрдЯреЛ рд╣реИ рдЬрдм рд╣рдордиреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рдпреБ рдирд┐рд▓рдВрдмрди рдХрдареЛрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдирд╕реЙрдЗрдбрд▓ рд╕рддрд╣ рдкрд░ рдПрдХ рд╡рд╛рд╣рди рдХреЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рддреНрд╡рд░рдг рдЖрдпрд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ред


рдореИрдВ STM32F3 рдХреЗ рддрд╣рдд IAR рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рднреА рд╕рдВрд▓рдЧреНрди рдХрд░реВрдВрдЧрд╛ред рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдЦрд░рд╛рдм" рдХреЛрдб рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд▓реНрдж рд╣реА" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдб рдкрд░ рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП, рдФрд░ рди рдХреЗрд╡рд▓, рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

dl.dropboxusercontent.com/u/61862295/VirtualComport_Loopback.rar

рдореИрдВ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдкреНрд░рддрд┐ рдЕрдкрдирд╛ рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рд▓рдВрдмреЗ рем рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕рд┐рдЦрд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдбрд┐рдкреНрд▓реЛрдорд╛ рдиреЗрддрд╛, рдЬреЛ рдордзреНрдпрдо рд░реВрдк рд╕реЗ рдЙрддреНрддрд░рджрд╛рдпреА рдереЗ рдФрд░ рд╣рдореЗрд╢рд╛ "рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ" рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░рддреЗ рдереЗред


рдкреНрд░рдпреБрдХреНрдд рд╕реНрд░реЛрдд:


1. STM32F3 рдбрд┐рд╕реНрдХрд╡рд░реА рдХрд┐рдЯ рдлрд░реНрдорд╡реЗрдпрд░ рдкреИрдХреЗрдЬ, рдЬрд┐рд╕рдореЗрдВ 28 рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ 4 рд╡рд┐рднрд┐рдиреНрди IDEs www.st.com/web/en/catalog/tools/PF258154 рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдирд┐рд░реНрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
2. рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд╢рд┐рдЯреНрд╕ред

Source: https://habr.com/ru/post/In183856/


All Articles