Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "main.h"
- I2C_HandleTypeDef hi2c1;
- RTC_HandleTypeDef hrtc;
- TIM_HandleTypeDef htim2;
- TIM_HandleTypeDef htim3;
- TIM_HandleTypeDef htim9;
- UART_HandleTypeDef huart2;
- /* Private function prototypes -----------------------------------------------*/
- void SystemClock_Config(void);
- static void MX_GPIO_Init(void);
- static void MX_TIM2_Init(void);
- static void MX_USART2_UART_Init(void);
- static void MX_I2C1_Init(void);
- static void MX_RTC_Init(void);
- static void MX_TIM3_Init(void);
- static void MX_TIM9_Init(void);
- static void MEMS_Init(void);
- static void associateNumber(uint8_t number);
- static void resetPin(void);
- typedef enum state {idle, wakeUp} State;
- struct time
- {
- uint8_t secondsU;
- uint8_t secondsD;
- uint8_t minutesU;
- uint8_t minutesD;
- uint8_t hoursU;
- uint8_t hoursD;
- } actualTime;
- struct time actualTimeASCII;
- volatile State machine = idle;
- State machineOld = idle;
- struct time getTime(void);
- struct time getTimeASCII(void);
- void displayNumber(struct time input);
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_TIM2_Init();
- MX_USART2_UART_Init();
- MX_I2C1_Init();
- MX_RTC_Init();
- MX_TIM3_Init();
- MX_TIM9_Init();
- MEMS_Init();
- while (1)
- {
- switch (machine)
- {
- case idle:
- //HAL_UART_Transmit(&huart2, (uint8_t*)"idle\n", 7, 30);
- //HAL_Delay(1000);
- break;
- case wakeUp:
- actualTime = getTime();
- actualTimeASCII = getTimeASCII();
- HAL_UART_Transmit(&huart2, (uint8_t*)"wakeUp\n", 8, 30);
- HAL_UART_Transmit(&huart2, &actualTimeASCII.hoursD, 1, 30);
- HAL_UART_Transmit(&huart2, &actualTimeASCII.hoursU, 1, 30);
- HAL_UART_Transmit(&huart2, (uint8_t*)":", 1, 30);
- HAL_UART_Transmit(&huart2, &actualTimeASCII.minutesD, 1, 30);
- HAL_UART_Transmit(&huart2, &actualTimeASCII.minutesU, 1, 30);
- HAL_UART_Transmit(&huart2, (uint8_t*)":", 1, 30);
- HAL_UART_Transmit(&huart2, &actualTimeASCII.secondsD, 1, 30);
- HAL_UART_Transmit(&huart2, &actualTimeASCII.secondsU, 1, 30);
- HAL_UART_Transmit(&huart2, (uint8_t*)"\n", 3, 30);
- HAL_TIM_PWM_Start(&htim9, TIM_CHANNEL_1);
- htim9.Instance->CCR1 = 1;
- displayNumber(actualTime);
- htim9.Instance->CCR1 = 0;
- HAL_TIM_PWM_Stop(&htim9, TIM_CHANNEL_1);
- //HAL_Delay(1000);
- machine=idle;
- break;
- }
- }
- }
- void MEMS_Init(void)
- {
- uint8_t MAddr=0x68;
- uint8_t maskPWR_MGMT_1[2] = {0x6b, 0x01};//6b
- uint8_t maskPWR_MGMT_2[2] = {0x6c, 0x07};//6c
- uint8_t maskACCEL_CONFIG_2[2] ={0x1d, 0x05};//1d
- uint8_t maskINT_ENABLE[2] = {0x38, 0x40};//38
- uint8_t maskMOT_DETECT_CTRL[2] = {0x69, 0xc0};//69
- uint8_t maskWOM_THR[2]={0x1f, 0x04};//1f SOGLIA RISVEGLIO
- uint8_t maskLP_ACCEL_ODR[2] = {0x1e, 0x07};//1e OUTPUT DATA RATE
- uint8_t maskPWR_MGMT_1_new[2] = {0x6b, 0x20};//6b
- uint8_t maskINT_PIN_CFG[2] = {0x37, 0b10};//3a
- if(HAL_I2C_IsDeviceReady(&hi2c1, MAddr<<1, 2, 10) == HAL_OK)
- {
- HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6);
- HAL_UART_Transmit(&huart2, (uint8_t*)"DEVICE READY!\n", 16, 30);
- HAL_Delay(1000);
- HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskPWR_MGMT_1, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskPWR_MGMT_2, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskACCEL_CONFIG_2, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskINT_ENABLE, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskINT_PIN_CFG, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskMOT_DETECT_CTRL, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskWOM_THR, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskLP_ACCEL_ODR, 2, 30);
- HAL_Delay(5);
- HAL_I2C_Master_Transmit(&hi2c1, MAddr<<1, maskPWR_MGMT_1_new, 2, 30);
- HAL_Delay(5);
- }
- }
- struct time getTime(void)
- {
- struct time tempTime;
- RTC_TimeTypeDef time;
- RTC_DateTypeDef date;
- HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD);
- HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BCD);
- tempTime.secondsU=(time.Seconds%16);
- tempTime.secondsD=(time.Seconds/16);
- tempTime.minutesU=(time.Minutes%16);
- tempTime.minutesD=(time.Minutes/16);
- tempTime.hoursU=(time.Hours%16);
- tempTime.hoursD=(time.Hours/16);
- return tempTime;
- }
- struct time getTimeASCII(void)
- {
- struct time tempTime;
- RTC_TimeTypeDef time;
- RTC_DateTypeDef date;
- HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD);
- HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BCD);
- tempTime.secondsU=(time.Seconds%16)+48;
- tempTime.secondsD=(time.Seconds/16)+48;
- tempTime.minutesU=(time.Minutes%16)+48;
- tempTime.minutesD=(time.Minutes/16)+48;
- tempTime.hoursU=(time.Hours%16)+48;
- tempTime.hoursD=(time.Hours/16)+48;
- return tempTime;
- }
- static void resetPin (void)
- {
- HAL_GPIO_WritePin(GPIOC, MUX_DOT_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOC, MUX_9_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOC, MUX_8_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_7_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_6_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_5_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_4_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_3_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_2_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_1_Pin, GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOA, MUX_0_Pin, GPIO_PIN_RESET);
- }
- static void associateNumber(uint8_t number)
- {
- switch(number)
- {
- case 0:
- HAL_GPIO_WritePin(GPIOA, MUX_0_Pin, GPIO_PIN_SET);
- break;
- case 1:
- HAL_GPIO_WritePin(GPIOA, MUX_1_Pin, GPIO_PIN_SET);
- break;
- case 2:
- HAL_GPIO_WritePin(GPIOA, MUX_2_Pin, GPIO_PIN_SET);
- break;
- case 3:
- HAL_GPIO_WritePin(GPIOA, MUX_3_Pin, GPIO_PIN_SET);
- break;
- case 4:
- HAL_GPIO_WritePin(GPIOA, MUX_4_Pin, GPIO_PIN_SET);
- break;
- case 5:
- HAL_GPIO_WritePin(GPIOA, MUX_5_Pin, GPIO_PIN_SET);
- break;
- case 6:
- HAL_GPIO_WritePin(GPIOA, MUX_6_Pin, GPIO_PIN_SET);
- break;
- case 7:
- HAL_GPIO_WritePin(GPIOA, MUX_7_Pin, GPIO_PIN_SET);
- break;
- case 8:
- HAL_GPIO_WritePin(GPIOC, MUX_8_Pin, GPIO_PIN_SET);
- break;
- case 9:
- HAL_GPIO_WritePin(GPIOC, MUX_9_Pin, GPIO_PIN_SET);
- break;
- case 10:
- HAL_GPIO_WritePin(GPIOC, MUX_DOT_Pin, GPIO_PIN_SET);
- break;
- }
- }
- volatile uint16_t intTimer=0;
- void displayNumber(struct time input)
- {
- volatile uint16_t intTimerOld=0;
- uint8_t cnt=0;
- htim2.Instance->CCR1 = 100;
- htim2.Instance->CCR2 = 100;
- htim2.Instance->CCR3 = 100;
- htim2.Instance->CCR4 = 100;
- HAL_TIM_Base_Start_IT(&htim3);
- while(intTimer < 6500)
- {
- if(intTimerOld != intTimer)
- {
- switch(cnt)
- {
- case 0:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- resetPin();
- associateNumber(input.minutesD);
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
- cnt++;
- break;
- case 1:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- resetPin();
- associateNumber(input.minutesU);
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
- cnt++;
- break;
- case 2:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- resetPin();
- associateNumber(input.secondsD);
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
- cnt++;
- break;
- case 3:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- resetPin();
- associateNumber(input.secondsU);
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4);
- cnt++;
- break;
- case 4:
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- resetPin();
- associateNumber(10);
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
- cnt=0;
- break;
- }
- intTimerOld = intTimer;
- }
- }
- resetPin();
- htim2.Instance->CCR1 = 0;
- htim2.Instance->CCR2 = 0;
- htim2.Instance->CCR3 = 0;
- htim2.Instance->CCR4 = 0;
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
- HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4);
- HAL_TIM_Base_Stop_IT(&htim3);
- intTimerOld=0;
- intTimer=0;
- }
- /**
- * @brief System Clock Configuration
- * @retval None
- */
- void SystemClock_Config(void)
- {
- RCC_OscInitTypeDef RCC_OscInitStruct = {0};
- RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
- RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
- /** Configure the main internal regulator output voltage
- */
- __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
- /** Initializes the CPU, AHB and APB busses clocks
- */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE;
- RCC_OscInitStruct.LSEState = RCC_LSE_ON;
- RCC_OscInitStruct.HSIState = RCC_HSI_ON;
- RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
- RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
- RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV3;
- 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_CLOCKTYPE_PCLK2;
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
- {
- Error_Handler();
- }
- PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
- PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
- if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
- {
- Error_Handler();
- }
- }
- /**
- * @brief I2C1 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_I2C1_Init(void)
- {
- /* USER CODE BEGIN I2C1_Init 0 */
- /* USER CODE END I2C1_Init 0 */
- /* USER CODE BEGIN I2C1_Init 1 */
- /* USER CODE END I2C1_Init 1 */
- hi2c1.Instance = I2C1;
- hi2c1.Init.ClockSpeed = 100000;
- hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
- hi2c1.Init.OwnAddress1 = 0;
- hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
- hi2c1.Init.OwnAddress2 = 0;
- hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
- hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
- if (HAL_I2C_Init(&hi2c1) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN I2C1_Init 2 */
- /* USER CODE END I2C1_Init 2 */
- }
- /**
- * @brief RTC Initialization Function
- * @param None
- * @retval None
- */
- static void MX_RTC_Init(void)
- {
- /* USER CODE BEGIN RTC_Init 0 */
- /* USER CODE END RTC_Init 0 */
- RTC_TimeTypeDef sTime = {0};
- RTC_DateTypeDef sDate = {0};
- RTC_AlarmTypeDef sAlarm = {0};
- /* USER CODE BEGIN RTC_Init 1 */
- /* USER CODE END RTC_Init 1 */
- /** Initialize RTC Only
- */
- hrtc.Instance = RTC;
- hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
- hrtc.Init.AsynchPrediv = 127;
- hrtc.Init.SynchPrediv = 255;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
- if (HAL_RTC_Init(&hrtc) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN Check_RTC_BKUP */
- /* USER CODE END Check_RTC_BKUP */
- /** Initialize RTC and set the Time and Date
- */
- sTime.Hours = 0x0;
- sTime.Minutes = 0x0;
- sTime.Seconds = 0x0;
- sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
- sTime.StoreOperation = RTC_STOREOPERATION_RESET;
- if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
- {
- Error_Handler();
- }
- sDate.WeekDay = RTC_WEEKDAY_MONDAY;
- sDate.Month = RTC_MONTH_JANUARY;
- sDate.Date = 0x1;
- sDate.Year = 0x0;
- if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK)
- {
- Error_Handler();
- }
- /** Enable the Alarm A
- */
- sAlarm.AlarmTime.Hours = 0x0;
- sAlarm.AlarmTime.Minutes = 0x0;
- sAlarm.AlarmTime.Seconds = 0x0;
- sAlarm.AlarmTime.SubSeconds = 0x0;
- sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
- sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
- sAlarm.AlarmMask = RTC_ALARMMASK_NONE;
- sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;
- sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
- sAlarm.AlarmDateWeekDay = 0x1;
- sAlarm.Alarm = RTC_ALARM_A;
- if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK)
- {
- Error_Handler();
- }
- /** Enable the Alarm B
- */
- sAlarm.AlarmDateWeekDay = 0x1;
- sAlarm.Alarm = RTC_ALARM_B;
- if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK)
- {
- Error_Handler();
- }
- /** Enable the WakeUp
- */
- if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0, RTC_WAKEUPCLOCK_RTCCLK_DIV16) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN RTC_Init 2 */
- /* USER CODE END RTC_Init 2 */
- }
- /**
- * @brief TIM2 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_TIM2_Init(void)
- {
- /* USER CODE BEGIN TIM2_Init 0 */
- /* USER CODE END TIM2_Init 0 */
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- TIM_MasterConfigTypeDef sMasterConfig = {0};
- TIM_OC_InitTypeDef sConfigOC = {0};
- /* USER CODE BEGIN TIM2_Init 1 */
- /* USER CODE END TIM2_Init 1 */
- htim2.Instance = TIM2;
- htim2.Init.Prescaler = 32000;
- htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim2.Init.Period = 1;
- htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
- {
- Error_Handler();
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
- {
- Error_Handler();
- }
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 0;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM2_Init 2 */
- /* USER CODE END TIM2_Init 2 */
- HAL_TIM_MspPostInit(&htim2);
- }
- /**
- * @brief TIM3 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_TIM3_Init(void)
- {
- /* USER CODE BEGIN TIM3_Init 0 */
- /* USER CODE END TIM3_Init 0 */
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- TIM_MasterConfigTypeDef sMasterConfig = {0};
- /* USER CODE BEGIN TIM3_Init 1 */
- /* USER CODE END TIM3_Init 1 */
- htim3.Instance = TIM3;
- htim3.Init.Prescaler = 32000;
- htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim3.Init.Period = 1;
- htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM3_Init 2 */
- /* USER CODE END TIM3_Init 2 */
- }
- /**
- * @brief TIM9 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_TIM9_Init(void)
- {
- /* USER CODE BEGIN TIM9_Init 0 */
- /* USER CODE END TIM9_Init 0 */
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- TIM_MasterConfigTypeDef sMasterConfig = {0};
- TIM_OC_InitTypeDef sConfigOC = {0};
- /* USER CODE BEGIN TIM9_Init 1 */
- /* USER CODE END TIM9_Init 1 */
- htim9.Instance = TIM9;
- htim9.Init.Prescaler = 64000;
- htim9.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim9.Init.Period = 2;
- htim9.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim9.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim9) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim9, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_Init(&htim9) != HAL_OK)
- {
- Error_Handler();
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim9, &sMasterConfig) != HAL_OK)
- {
- Error_Handler();
- }
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 0;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim9, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM9_Init 2 */
- /* USER CODE END TIM9_Init 2 */
- HAL_TIM_MspPostInit(&htim9);
- }
- /**
- * @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;
- if (HAL_UART_Init(&huart2) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN USART2_Init 2 */
- /* USER CODE END USART2_Init 2 */
- }
- /**
- * @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_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOA, MUX_0_Pin|MUX_1_Pin|MUX_2_Pin|MUX_3_Pin
- |MUX_4_Pin|MUX_5_Pin|MUX_6_Pin|MUX_7_Pin, GPIO_PIN_RESET);
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOC, MUX_8_Pin|MUX_9_Pin|MUX_DOT_Pin, GPIO_PIN_RESET);
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOB, BLUE_LED_Pin|GREEN_LED_Pin, GPIO_PIN_RESET);
- /*Configure GPIO pins : BTN_UP_Pin BTN_MD_Pin BTN_DW_Pin */
- GPIO_InitStruct.Pin = BTN_UP_Pin|BTN_MD_Pin|BTN_DW_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pins : MUX_0_Pin MUX_1_Pin MUX_2_Pin MUX_3_Pin
- MUX_4_Pin MUX_5_Pin MUX_6_Pin MUX_7_Pin */
- GPIO_InitStruct.Pin = MUX_0_Pin|MUX_1_Pin|MUX_2_Pin|MUX_3_Pin
- |MUX_4_Pin|MUX_5_Pin|MUX_6_Pin|MUX_7_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_PULLDOWN;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- /*Configure GPIO pins : MUX_8_Pin MUX_9_Pin MUX_DOT_Pin */
- GPIO_InitStruct.Pin = MUX_8_Pin|MUX_9_Pin|MUX_DOT_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_PULLDOWN;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pin : INT_MEMS_Pin */
- GPIO_InitStruct.Pin = INT_MEMS_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(INT_MEMS_GPIO_Port, &GPIO_InitStruct);
- /*Configure GPIO pins : BLUE_LED_Pin GREEN_LED_Pin */
- GPIO_InitStruct.Pin = BLUE_LED_Pin|GREEN_LED_Pin;
- 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);
- /* EXTI interrupt init*/
- HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(EXTI1_IRQn);
- HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(EXTI2_IRQn);
- HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(EXTI3_IRQn);
- HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(EXTI9_5_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(uint8_t *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****/
Add Comment
Please, Sign In to add comment