找传奇、传世资源到传世资源站!

OID实例(源码)

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

OID实例

/* USER CODE BEGIN Header *//** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics. * All rights reserved.</center></h2> * * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** *//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include "main.h"#include "stm32f0xx_usart.h"#include "stdtypes.h"#include <stdlib.h>#include <string.h>#include <stdio.h>/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*/UART_HandleTypeDef huart2;/* USER CODE BEGIN PV *//* USER CODE END PV */UART_HandleTypeDef huart1;UART_HandleTypeDef huart4;UART_HandleTypeDef huart3;/* Private function prototypes -----------------------------------------------*/void SystemClock_Config(void);static void MX_GPIO_Init(void);static void MX_USART2_UART_Init(void);static void MX_USART4_UART_Init(void);static void MX_USART3_UART_Init(void);/* USER CODE BEGIN PFP *///#define OID_DEBUG_INFO(str,...) printf("OIDParser: "str"\r\n",__VA_ARGS__) /* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 */uint8_t max_buffer[256] = {0x00};uint8_t LED_Flag[5] = {0};uint8_t OID_Test_Flag = 0;/* USER CODE BEGIN PFP */uint8_t aaaa[] = {0xF9 ,0x74 ,0x00 ,0x01 ,0x00 , 0x00 ,0x00 ,0x36 ,0x00 ,0x07 , 0x00 ,0x05 ,0x00 ,0x64 ,0x01 , 0x7E ,0x4D ,0x5E ,0x2B ,0x01 , 0x00 ,0x3A ,0x02 ,0x02 ,0x00 , 0xC7 ,0x00 ,0x0E ,0x00 ,0xF4 , 0x01 ,0xFB ,0x04 ,0x00 ,0x0A , 0x00 ,0x9F ,0x00 ,0x0A ,0x00 , 0x14 ,0x00 ,0x64 ,0x00 ,0xE1 , 0x00 ,0x63 ,0x01 ,0x0E ,0x01 , 0x09 ,0x00 ,0x00 ,0x20 ,0x00 , 0x00 ,0xE2 ,0x18 ,0x1A ,0x27 , 0x9F ,0x00 ,0x01 ,0x00 ,0x3E , 0x06 ,0x25 ,0x00 ,0x33 ,0x00 , 0x41 ,0x00 ,0x4F ,0x00 ,0x5E , 0x00 ,0x64 ,0x00 ,0x14 ,0x00 , 0x01 ,0x00 ,0xEE ,0x27 ,0x4F , 0x1A ,0xE9 ,0x13 ,0xA4 ,0x0F , 0x00 ,0x40 ,0x3E ,0x29 ,0x94 , 0x1E ,0xE3 ,0x18 ,0x03 ,0x00 , 0x00 ,0x00 ,0x03 ,0x00 ,0x04 , 0x00 ,0x05 ,0x00 ,0x02 ,0x00 , 0x02 ,0x00 ,0x02 ,0x00 ,0x02 , 0x00 ,0x04 ,0x00 ,0x53 ,0x92 };uint8_t step1[] = {0xF9, 0x08, 0x00, 0x02, 0x00, 0x08, 0x16, 0x01, 0x00, 0xE3, 0xCD};uint8_t step2[] = {0xF9, 0x08, 0x00, 0x02, 0x00, 0x00, 0x16, 0x01, 0x00, 0xE1, 0xAD};uint8_t step3[] = {0xF9, 0x08, 0x00, 0x02, 0x00, 0x15, 0x16, 0x01, 0x00, 0xE5, 0xA1};uint8_t step4[] = {0xF9, 0x0A, 0x00, 0x01, 0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8E, 0xFB, 0x00};uint8_t step5[] = {0xF9, 0x0A, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x84, 0xA4};uint8_t step6[] = {0xF9, 0x0A, 0x00, 0x03, 0x00, 0xCA, 0x16, 0x01, 0x00, 0x21, 0x03, 0x01, 0xDA};uint8_t step7[] = {0xF9, 0x0C, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0xBB, 0xC6, 0xE9, 0x90, 0x4B, 0x1A};uint8_t step8[] = {0xF9, 0x0A, 0x00, 0x01, 0x00, 0x36, 0x00, 0x01, 0x00, 0x00, 0x00, 0x85, 0xAD};uint8_t step9[] = {0xF9, 0x0A, 0x00, 0x01, 0x00, 0x37, 0x00, 0x01, 0x00, 0x0C, 0x00, 0x81, 0x7C};uint8_t step10[] = {0xfd, 0xff, 0xff};uint8_t setLed1[] = {0xF9, 0x0A, 0x00, 0x03, 0x00, 0x08, 0x16, 0x01, 0x00, 0xB8, 0x0B, 0x7A, 0xAE};uint8_t setLed2[] = {0xF9, 0x0A, 0x00, 0x03, 0x00, 0x09, 0x16, 0x01, 0x00, 0xB8, 0x0B, 0x7B, 0x7F};uint8_t setLed3[] = {0xF9, 0x08, 0x00, 0x02, 0x00, 0x00, 0x16, 0x01, 0x00, 0xE1, 0xAD};static OIDParser_code_t *mp_code = NULL;OIDParser_code_t aaal;OIDParser_analog_t aaaan[10] = {0};//OIDParser_digital_t aaadi[10] = {0};OIDParser_radius_t radiusTable[5];OIDParser_analog_t analogTable[10];OIDParser_analog_t analogTable_check[10];//static uint8_t mb_codeReceived = 0;uint8_t setLed4[] = {0xF9, 0x0A, 0x00, 0x03, 0x00, 0x00, 0x16, 0x01, 0x00, 0xB0, 0x00, 0x3D, 0xE1};/* USER CODE END PFP */uint8_t ddd[] = {0xF9, 0x32, 0x00, 0x17, 0x00, 0x9D, 0x11, 0x01, 0x01, 0x7D, 0xFB, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0xF1, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x01, 0x01, 0xF0, 0x71, 0xFB, 0x04, 0x01, 0x00, 0x00, 0x01, 0x01, 0x20, 0xAB, 0xFB, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x43, 0x7C, 0xB8, 0x00, 0x04, 0x00, 0x52, 0x18};/* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 */uint8_t aaa[200] = {0};uint8_t aaa4[200] = {0};uint8_t aab[256] = {0};static intanalogComp (const void * elem1, const void * elem2){ OIDParser_analog_t f = *((OIDParser_analog_t*)elem1); OIDParser_analog_t s = *((OIDParser_analog_t*)elem2); if (f.value > s.value) return 1; if (f.value < s.value) return -1; return 0;}static voidsortAnalogValues(OIDParser_analog_t *p_data, uint8_t len){ qsort (p_data, len, sizeof(OIDParser_analog_t), analogComp); }static floatconvertToAngle (const uint16_t raw){ return raw / 182.0;}voidOIDParser_resetCode (void){ uint8_t nbAnalog = 0U; uint8_t nbDigital = 0U; uint8_t idx;// mb_codeReceived = false; for (idx = 0; idx < mp_code->nbRadius; idx ) { nbAnalog = mp_code->p_radiusTable[idx].maxNbAnalog; nbDigital = mp_code->p_radiusTable[idx].maxNbAnalog; } memset(mp_code->p_analogTable, 0, nbAnalog * sizeof(OIDParser_analog_t)); memset(&mp_code->digital, 0, sizeof(OIDParser_digital_t));}void OID_Init(){ // fill the code structure with specific patern mp_code = &aaal; aaal.nbRadius = 5; aaal.luminance = 2; aaal.p_radiusTable = radiusTable; aaal.p_analogTable = analogTable; //aaal. aaadi // total 10 analog and 3 digital on 5 radius radiusTable[0].maxNbAnalog = 2; radiusTable[0].nbDigital = 1; radiusTable[1].maxNbAnalog = 4; radiusTable[1].nbDigital = 0; radiusTable[2].maxNbAnalog = 1; radiusTable[2].nbDigital = 0; radiusTable[3].maxNbAnalog = 0; radiusTable[3].nbDigital = 2; radiusTable[4].maxNbAnalog = 3; radiusTable[4].nbDigital = 0; memset(analogTable, 3, sizeof(analogTable)); aaal.digital.value = 4; OIDParser_resetCode(); memset(analogTable_check, 0, sizeof(analogTable_check));}static void MX_USART1_UART_Init(void){ /* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN USART1_Init 2 */ /* USER CODE END USART1_Init 2 */}FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint32_t USART_FLAG){ FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_FLAG(USART_FLAG)); if ((USARTx->ISR & USART_FLAG) != (uint16_t)RESET) { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus;}void USART_ClearFlag(USART_TypeDef* USARTx, uint32_t USART_FLAG){ /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_CLEAR_FLAG(USART_FLAG)); USARTx->ICR = USART_FLAG;}uint16_t str_cut_out(uint8_t* buff, uint8_t* array_slice, uint16_t start_addr, uint16_t stop_addr){ uint16_t cnt = 0; for(uint16_t cut_addr = start_addr; cut_addr <= stop_addr; cut_addr ) { buff[cnt] = array_slice[cut_addr]; cnt ; } return cnt;}uint8_t uart_send(USART_TypeDef * p_uart, uint8_t * data, uint16_t data_len){ USART_TypeDef* uart_port = p_uart; str_cut_out(max_buffer, data, 0, data_len); for(uint16_t tx_len = 0; tx_len < data_len; tx_len ) { /* 堵塞判断串口是否发送完成 */ while((uart_port->ISR & 0X40) == 0); //bit7: TXE /* 串口发送完成,将该字符发送 */ uart_port->TDR = (uint8_t) max_buffer[tx_len]; } return 0;}#if 1//串口打印数据重定向int fputc(int ch, FILE *stream){ /* 堵塞判断串口是否发送完成 */ while((USART1->ISR & 0X40) == 0); /* 串口发送完成,将该字符发送 */ USART1->TDR = (uint8_t) ch; return ch;}void oid_printf(uint8_t *p_data1){ uint32_t tmp; tmp = *(p_data1 ); tmp = (uint16_t)(*(p_data1 )) << 8; mp_code->orientation = tmp; printf("orientation: %f \r\n", convertToAngle(mp_code->orientation)); tmp = *(p_data1 ); tmp = (uint16_t)(*p_data1 ) << 8; mp_code->nbPoints = tmp; printf("nb points: %u\r\n", mp_code->nbPoints); tmp = *(p_data1 ); tmp = (uint16_t)(*(p_data1 )) << 8; mp_code->nbCenters = tmp; printf("nb centers: %u\r\n", mp_code->nbCenters);}#endifint8_t parseCode (uint8_t *p_data, const uint16_t len){ uint8_t radius; uint8_t idx; uint8_t m,n; uint32_t tmp; OIDParser_analog_t *p_analog; mp_code->nbCenters = 0; mp_code->nbPoints = 0; tmp = *p_data ; tmp = (uint16_t)(*p_data ) << 8; mp_code->luminance = tmp; printf("luminance: %d", mp_code->luminance); p_analog = mp_code->p_analogTable; //printf("mp_code->nbRadius: %u\r\n", mp_code->nbRadius); for (radius = 0; radius < mp_code->nbRadius; radius ) { m = *(p_data ); n = *(p_data ); printf("radius: %u | %u analog | %u digital\r\n", radius, m, n); if (m > 4)// (mp_code->p_radiusTable[radius].maxNbAnalog)) { printf("Too much analog data\r\n",NULL); return -1; } if (n > 1) { printf("Too much analog data_2\r\n",NULL); return -1; } // parse the analog values 解析模拟值 mp_code->p_radiusTable[radius].nbAnalog = m; for (idx = 0; idx < m; idx ) { if(idx > 4) { return -1; } tmp = *(p_data ); tmp = (uint16_t)(*p_data ) << 8; printf("analog %u.%u = %f, %04X, %d\r\n", radius, idx, convertToAngle(tmp), tmp, (uint16_t)((&p_analog[idx]) - mp_code->p_analogTable)); p_analog[idx].value = tmp; } if (mp_code->p_radiusTable[radius].nbAnalog > 1) { sortAnalogValues(p_analog, mp_code->p_radiusTable[radius].nbAnalog); } p_analog = mp_code->p_radiusTable[radius].maxNbAnalog;// printf("NNNNNNNNNN = %u", n); // parse the digital values //if(n != 0) //{ for (idx = 0u; idx < n; idx ) { tmp = *p_data ; tmp = (uint32_t)(*p_data ) << 8; tmp = (uint32_t)(*p_data ) << 16; tmp = (uint32_t)(*p_data ) << 24; printf("digital %u.%u = %08X \r\n", radius, idx, tmp); // VENUS only if (radius == 0) { mp_code->digital.value = tmp & 0x0003; // bits 1..0 } else if (radius == 1) { mp_code->digital.value = ((tmp & 0x003F)<< 2); // bits 7..2 } else if (radius == 5) { mp_code->digital.value = ((tmp & 0x000F) << 8); // bits 11..9 } } //} } oid_printf(p_data); return 0;}/*void OIDParser_receiveFrame (uint8_t *p_data, const uint16_t len){ printf("new frame (%u)", len); if (len > 4) { int8_t ret = parseCode(p_data, len); }}*/void delay(uint32_t aa){ uint32_t Temp = 10000; while(aa--) { while(Temp--); Temp = 10000; }}extern uint8_t rx_offset;extern uint8_t rx_offset4;uint8_t Oid_State1 = 0;static uint8_t test_cnd2 = 0;static uint8_t test_cnd = 0;void oid_discern4(){ static uint8_t oid1_Cnd2 = 0; if(oid1_Cnd2 > 5) { LED_Flag[2 test_cnd2] = 1; test_cnd2 ; if(test_cnd2 == 2) { test_cnd2 = 0; } if(test_cnd2 == 1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET); } oid1_Cnd2 = 0; return; } if((test_cnd2 > test_cnd) && (test_cnd2 != 0)) { return; } switch(Oid_State1) { case 0: { rx_offset4 = 0; HAL_UART_Receive_IT(&huart4, aab, 250); uart_send(USART4, aaaa, sizeof(aaaa)); delay(50); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); //HAL_UART_Receive_IT(&huart2, aaa, 4); //uart_read(USART2, aaa, 4); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 1; } } break; case 1: { rx_offset4 = 0; uart_send(USART4, step1, sizeof(step1)); delay(10); //uart_read(USART2, aaa, 4); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { //Temp = aaa[8] << 8 aaa[7]; if(aaa4[8] < 7) { uart_send(USART4, setLed1, sizeof(setLed1)); delay(29); uart_send(USART4, setLed2, sizeof(setLed2)); delay(29); uart_send(USART4, setLed3, sizeof(setLed3)); delay(29); uart_send(USART2, setLed4, sizeof(setLed4)); oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 1; } else { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 2; } } } break; case 2: { rx_offset4 = 0; uart_send(USART4, step2, sizeof(step2)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 3; } } break; case 3: { rx_offset4 = 0; uart_send(USART4, step3, sizeof(step3)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 4; } } break; case 4: { rx_offset4 = 0; uart_send(USART4, step4, sizeof(step4)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 5; } } break; case 5: { rx_offset4 = 0; uart_send(USART4, step5, sizeof(step5)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 6; } } break; case 6: { rx_offset4 = 0; uart_send(USART4, step6, sizeof(step6)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 7; } } break; case 7: { rx_offset4 = 0; uart_send(USART4, step7, sizeof(step7)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 8; } } break; case 8: { rx_offset4 = 0; uart_send(USART4, step8, sizeof(step8)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 9; } } break; case 9: { rx_offset4 = 0; uart_send(USART4, step9, sizeof(step9)); delay(10); oid1_Cnd2 ; if(aaa4[0] == 0xf9) { oid1_Cnd2 = 0; aaa4[0] = 0; Oid_State1 = 10; } } break; case 10: { rx_offset4 = 0; uart_send(USART4, step10, sizeof(step10)); delay(40); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); delay(40); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); oid1_Cnd2 ; if(aaa4[0] == 0xf9 && rx_offset4 > 0x10) { if(aaa4[1] == 0x32) { // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET); // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET); if(-1 != parseCode(&aaa4[5], 46)) //parseCode(&ddd[5], 46); //if(0 == strncmp(&aaa4[5], &ddd[5], 46)) { } LED_Flag[2 test_cnd2] = 2; test_cnd2 ; if(test_cnd2 == 2) { test_cnd2 = 0; } /* } else if(oid1_Cnd2 > 6) { LED_Flag[2 test_cnd2] = 1; test_cnd2 ; if(test_cnd2 == 2) { test_cnd2 = 0; } } */ } else { // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET); // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET); LED_Flag[2 test_cnd2] = 1; test_cnd2 ; if(test_cnd2 == 2) { test_cnd2 = 0; } } } } oid1_Cnd2 = 0; aaa[0] = 0; Oid_State1 = 3; break; }}/** * @brief The application entry point. * @retval int */uint8_t Oid_State = 0;void oid_discern(){ static uint8_t oid1_Cnd = 0; if(oid1_Cnd > 5) { LED_Flag[test_cnd] = 1; test_cnd ; if(test_cnd == 2) { test_cnd = 0; } oid1_Cnd = 0; return; } if((test_cnd == 0) && (test_cnd2 == 0)) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); } else if((test_cnd == 1) && (test_cnd2 == 1)) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); } if((test_cnd2 < test_cnd) && (test_cnd != 0)) { return; } switch(Oid_State) { case 0: { rx_offset = 0; HAL_UART_Receive_IT(&huart3, aab, 250); uart_send(USART3, aaaa, sizeof(aaaa)); delay(50); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); //HAL_UART_Receive_IT(&huart2, aaa, 4); //uart_read(USART2, aaa, 4); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 1; } } break; case 1: { rx_offset = 0; uart_send(USART3, step1, sizeof(step1)); delay(10); //uart_read(USART2, aaa, 4); oid1_Cnd ; if(aaa[0] == 0xf9) { //Temp = aaa[8] << 8 aaa[7]; if(aaa[8] < 7) { uart_send(USART3, setLed1, sizeof(setLed1)); delay(29); uart_send(USART3, setLed2, sizeof(setLed2)); delay(29); uart_send(USART3, setLed3, sizeof(setLed3)); delay(29); uart_send(USART3, setLed4, sizeof(setLed4)); aaa[0] = 0; oid1_Cnd = 0; Oid_State = 1; } else { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 2; } } } break; case 2: { rx_offset = 0; uart_send(USART3, step2, sizeof(step2)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 3; } } break; case 3: { rx_offset = 0; uart_send(USART3, step3, sizeof(step3)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 4; } } break; case 4: { rx_offset = 0; uart_send(USART3, step4, sizeof(step4)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 5; } } break; case 5: { rx_offset = 0; uart_send(USART3, step5, sizeof(step5)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 6; } } break; case 6: { rx_offset = 0; uart_send(USART3, step6, sizeof(step6)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 7; } } break; case 7: { rx_offset = 0; uart_send(USART3, step7, sizeof(step7)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 8; } } break; case 8: { rx_offset = 0; uart_send(USART3, step8, sizeof(step8)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 9; } } break; case 9: { rx_offset = 0; uart_send(USART3, step9, sizeof(step9)); delay(10); oid1_Cnd ; if(aaa[0] == 0xf9) { oid1_Cnd = 0; aaa[0] = 0; Oid_State = 10; } } break; case 10: { rx_offset = 0; uart_send(USART3, step10, sizeof(step10)); delay(40); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); delay(40); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); oid1_Cnd ; if(aaa[0] == 0xf9 && rx_offset > 0x10) { if(aaa[1] == 0x32) { // HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);// HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); if(-1 != parseCode(&aaa[5], 46)) { } LED_Flag[test_cnd] = 2; test_cnd ; if(test_cnd == 2) { test_cnd = 0; } /*} else if(oid1_Cnd > 6) { LED_Flag[test_cnd] = 1; test_cnd ; if(test_cnd == 2) { test_cnd = 0; } }*/ } else {// HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); LED_Flag[test_cnd] = 1; test_cnd ; if(test_cnd == 2) { test_cnd = 0; } } oid1_Cnd = 0; aaa[0] = 0; Oid_State = 3; } } break; }}int main(void){ /* USER CODE BEGIN 1 */// static uint32_t Temp = 0; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ OID_Init(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); MX_USART2_UART_Init(); MX_USART3_UART_Init(); MX_USART4_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ delay(30); if(OID_Test_Flag == 0) { if(0 == HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5)) { for(int i = 0; i < 5; i ) { LED_Flag[i] = 0; } OID_Test_Flag = 1; HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOF, GPIO_PIN_1, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); test_cnd2 = 0; test_cnd = 0; //printf("test start... %d", Oid_State); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); } } else { if(LED_Flag[0] != 0 && LED_Flag[1] != 0 && LED_Flag[2] != 0 && LED_Flag[3] != 0) { if(LED_Flag[2] == 1) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET); } else if(LED_Flag[2] == 2) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET); } if(LED_Flag[3] == 1) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET); } else if(LED_Flag[3] == 2) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); } if(LED_Flag[0] == 1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET); } else if(LED_Flag[0] == 2) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET); } if(LED_Flag[1] == 1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_SET); } else if(LED_Flag[1] == 2) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET); } if(LED_Flag[2] == 2 && LED_Flag[3] == 2) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET); } if(LED_Flag[0] == 2 && LED_Flag[1] == 2) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); } HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0, GPIO_PIN_SET); OID_Test_Flag = 0; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); Oid_State = 0; Oid_State1 = 0; //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET); } else { HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0); oid_discern(); oid_discern4(); } }// USART2->TDR = 0x88; /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}/** * @brief System Clock Configuration * @retval None */void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; /** Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { Error_Handler(); }}/** * @brief USART2 Initialization Function * @param None * @retval None */static void MX_USART2_UART_Init(void){ /* USER CODE BEGIN USART2_Init 0 */ /* USER CODE END USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 1 */ /* USER CODE END USART2_Init 1 */ huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart2) != HAL_OK) { //Error_Handler(); } /* USER CODE BEGIN USART2_Init 2 */ /* USER CODE END USART2_Init 2 */ /* USART2 interrupt Init */ HAL_NVIC_SetPriority(USART2_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART2_IRQn); // NVIC_Config(USART2_IRQn);}static void MX_USART3_UART_Init(void){ /* USER CODE BEGIN USART3_Init 0 */ /* USER CODE END USART3_Init 0 */ /* USER CODE BEGIN USART3_Init 1 */ /* USER CODE END USART3_Init 1 */ huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart3) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN USART3_Init 2 */ /* USER CODE END USART3_Init 2 */}static void MX_USART4_UART_Init(void){ /* USER CODE BEGIN USART2_Init 0 */ /* USER CODE END USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 1 */ /* USER CODE END USART2_Init 1 */ huart4.Instance = USART4; huart4.Init.BaudRate = 115200; huart4.Init.WordLength = UART_WORDLENGTH_8B; huart4.Init.StopBits = UART_STOPBITS_1; huart4.Init.Parity = UART_PARITY_NONE; huart4.Init.Mode = UART_MODE_TX_RX; huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart4.Init.OverSampling = UART_OVERSAMPLING_16; huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart4) != HAL_OK) { Error_Handler(); }}/** * @brief GPIO Initialization Function * @param None * @retval None */static void MX_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE();// NVIC_InitTypeDef NVIC_InitStruct; /*Configure GPIO pin Output Level */// HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET); /*Configure GPIO pin : PB12 */ GPIO_InitStruct.Pin = GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOF, GPIO_PIN_1, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0, GPIO_PIN_SET); GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* Configure PC.13 pin as input floating */// GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;// GPIO_InitStruct.Pull = GPIO_NOPULL;// GPIO_InitStruct.Pin = GPIO_PIN_5;// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* Enable and set EXTI line 4_15 Interrupt to the lowest priority */// HAL_NVIC_SetPriority(EXTI4_15_IRQn, 2, 0);// HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//** * @brief This function is executed in case of error occurrence. * @retval None */void Error_Handler(void){ /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ /* USER CODE END Error_Handler_Debug */}#ifdef USE_FULL_ASSERT/** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */void assert_failed(char *file, uint32_t line){ /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */}#endif /* USE_FULL_ASSERT *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复