|
@@ -94,6 +94,7 @@ static void MX_GPIO_Init(void);
|
|
|
static void MX_DMA_Init(void);
|
|
|
static void MX_I2C1_Init(void);
|
|
|
static void MX_SPI1_Init(void);
|
|
|
+static void MX_TIM1_Init(void);
|
|
|
static void MX_TIM3_Init(void);
|
|
|
static void MX_TIM14_Init(void);
|
|
|
static void MX_TIM16_Init(void);
|
|
@@ -108,6 +109,7 @@ int8_t i2c_check_err(void);
|
|
|
static void sensorStartMeasure(void);
|
|
|
static void sensorGetData(void);
|
|
|
static void btnProcess(void);
|
|
|
+static void Color_RGB(uint8_t r, uint8_t g, uint8_t b);
|
|
|
/* USER CODE END PFP */
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
@@ -157,6 +159,7 @@ int main(void)
|
|
|
MX_DMA_Init();
|
|
|
MX_I2C1_Init();
|
|
|
MX_SPI1_Init();
|
|
|
+ MX_TIM1_Init();
|
|
|
MX_TIM3_Init();
|
|
|
MX_TIM14_Init();
|
|
|
MX_TIM16_Init();
|
|
@@ -168,19 +171,26 @@ int main(void)
|
|
|
/* Initialize Event State Machine */
|
|
|
ES_Init(stShowTime);
|
|
|
|
|
|
- /* Start RGB PWM */
|
|
|
- LL_TIM_CC_EnableChannel(TIM3, LL_TIM_CHANNEL_CH1);
|
|
|
- LL_TIM_CC_EnableChannel(TIM3, LL_TIM_CHANNEL_CH2);
|
|
|
- LL_TIM_CC_EnableChannel(TIM3, LL_TIM_CHANNEL_CH3);
|
|
|
- LL_TIM_EnableCounter(TIM3);
|
|
|
-
|
|
|
- /* Start Tube PWR PWM */
|
|
|
- LL_TIM_CC_EnableChannel(TIM14, LL_TIM_CHANNEL_CH1);
|
|
|
- LL_TIM_EnableCounter(TIM14);
|
|
|
-
|
|
|
/* Enable tube power */
|
|
|
TUBE_PWR_ON;
|
|
|
|
|
|
+ /** Start RGB & Tube Power PWM */
|
|
|
+ /* LL_TIM_CC_EnableChannel */
|
|
|
+ TIM1->CCER |= (TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E);
|
|
|
+ /* LL_TIM_EnableCounter */
|
|
|
+ TIM1->CR1 |= TIM_CR1_CEN;
|
|
|
+
|
|
|
+ TIM3->CCER |= (TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E);
|
|
|
+ TIM3->CR1 |= TIM_CR1_CEN;
|
|
|
+
|
|
|
+ /* Start Blink Engine */
|
|
|
+ Flag.Blink_1 = 0;
|
|
|
+ Flag.Blink_2 = 0;
|
|
|
+ Flag.Blink_3 = 0;
|
|
|
+ Flag.Blink_4 = 0;
|
|
|
+ Flag.Blink_5 = 0;
|
|
|
+ TIM14->CR1 |= TIM_CR1_CEN;
|
|
|
+
|
|
|
/* Set DMA source and destination addresses. */
|
|
|
/* Source: Address of the SPI buffer. */
|
|
|
DMA1_Channel1->CMAR = (uint32_t)&tubesBuffer;
|
|
@@ -208,16 +218,7 @@ int main(void)
|
|
|
rsltSensor = bme280_init(&SensorDev);
|
|
|
if (rsltSensor == BME280_OK) {
|
|
|
Flag.BME280 = 1;
|
|
|
- }
|
|
|
-
|
|
|
- /* Set tasks for Sheduler */
|
|
|
- RTOS_SetTask(btnProcess, 1, BTN_SCAN_PERIOD);
|
|
|
- /* USER CODE END 2 */
|
|
|
|
|
|
- /* USER CODE BEGIN WHILE */
|
|
|
- RTC_ReadAll(&Clock);
|
|
|
-
|
|
|
- if (Flag.BME280 != 0) {
|
|
|
/* BME280 Recommended mode of operation: Indoor navigation */
|
|
|
SensorDev.settings.osr_h = BME280_OVERSAMPLING_1X;
|
|
|
SensorDev.settings.osr_p = BME280_OVERSAMPLING_16X;
|
|
@@ -228,8 +229,16 @@ int main(void)
|
|
|
RTOS_SetTask(sensorGetData, 603, 1000);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /* Set tasks for Sheduler */
|
|
|
+ RTOS_SetTask(btnProcess, 1, BTN_SCAN_PERIOD);
|
|
|
+ /* USER CODE END 2 */
|
|
|
+
|
|
|
+ /* USER CODE BEGIN WHILE */
|
|
|
+ RTC_ReadAll(&Clock);
|
|
|
+
|
|
|
es_event_t event = eventNull;
|
|
|
- COLOR_RGB(0xFF, 0x12, 0x0); // Nixie color. FF7E00 or FFBF00
|
|
|
+ Color_RGB(0xFF, 0x12, 0x0); // Nixie color. FF7E00 or FFBF00
|
|
|
showTime();
|
|
|
|
|
|
/* Infinite loop */
|
|
@@ -658,6 +667,119 @@ static void MX_SPI1_Init(void)
|
|
|
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * @brief TIM1 Initialization Function
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+static void MX_TIM1_Init(void)
|
|
|
+{
|
|
|
+
|
|
|
+ /* USER CODE BEGIN TIM1_Init 0 */
|
|
|
+
|
|
|
+ /* USER CODE END TIM1_Init 0 */
|
|
|
+
|
|
|
+ LL_TIM_InitTypeDef TIM_InitStruct = {0};
|
|
|
+ LL_TIM_OC_InitTypeDef TIM_OC_InitStruct = {0};
|
|
|
+ LL_TIM_BDTR_InitTypeDef TIM_BDTRInitStruct = {0};
|
|
|
+
|
|
|
+ LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|
|
+
|
|
|
+ /* Peripheral clock enable */
|
|
|
+ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM1);
|
|
|
+
|
|
|
+ /* USER CODE BEGIN TIM1_Init 1 */
|
|
|
+
|
|
|
+ /* USER CODE END TIM1_Init 1 */
|
|
|
+ TIM_InitStruct.Prescaler = (240 - 1);
|
|
|
+ TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
|
|
+ TIM_InitStruct.Autoreload = 1000;
|
|
|
+ TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
|
|
|
+ TIM_InitStruct.RepetitionCounter = 0;
|
|
|
+ LL_TIM_Init(TIM1, &TIM_InitStruct);
|
|
|
+ LL_TIM_EnableARRPreload(TIM1);
|
|
|
+ LL_TIM_SetClockSource(TIM1, LL_TIM_CLOCKSOURCE_INTERNAL);
|
|
|
+ LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH1);
|
|
|
+ TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_PWM1;
|
|
|
+ TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
|
|
|
+ TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
|
|
|
+ TIM_OC_InitStruct.CompareValue = 500;
|
|
|
+ TIM_OC_InitStruct.OCPolarity = LL_TIM_OCPOLARITY_HIGH;
|
|
|
+ TIM_OC_InitStruct.OCNPolarity = LL_TIM_OCPOLARITY_HIGH;
|
|
|
+ TIM_OC_InitStruct.OCIdleState = LL_TIM_OCIDLESTATE_LOW;
|
|
|
+ TIM_OC_InitStruct.OCNIdleState = LL_TIM_OCIDLESTATE_LOW;
|
|
|
+ LL_TIM_OC_Init(TIM1, LL_TIM_CHANNEL_CH1, &TIM_OC_InitStruct);
|
|
|
+ LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH1);
|
|
|
+ LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH2);
|
|
|
+ LL_TIM_OC_Init(TIM1, LL_TIM_CHANNEL_CH2, &TIM_OC_InitStruct);
|
|
|
+ LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH2);
|
|
|
+ LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH3);
|
|
|
+ LL_TIM_OC_Init(TIM1, LL_TIM_CHANNEL_CH3, &TIM_OC_InitStruct);
|
|
|
+ LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH3);
|
|
|
+ LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH4);
|
|
|
+ LL_TIM_OC_Init(TIM1, LL_TIM_CHANNEL_CH4, &TIM_OC_InitStruct);
|
|
|
+ LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH4);
|
|
|
+ LL_TIM_SetTriggerOutput(TIM1, LL_TIM_TRGO_RESET);
|
|
|
+ LL_TIM_SetTriggerOutput2(TIM1, LL_TIM_TRGO2_RESET);
|
|
|
+ LL_TIM_DisableMasterSlaveMode(TIM1);
|
|
|
+ TIM_BDTRInitStruct.OSSRState = LL_TIM_OSSR_DISABLE;
|
|
|
+ TIM_BDTRInitStruct.OSSIState = LL_TIM_OSSI_DISABLE;
|
|
|
+ TIM_BDTRInitStruct.LockLevel = LL_TIM_LOCKLEVEL_OFF;
|
|
|
+ TIM_BDTRInitStruct.DeadTime = 0;
|
|
|
+ TIM_BDTRInitStruct.BreakState = LL_TIM_BREAK_DISABLE;
|
|
|
+ TIM_BDTRInitStruct.BreakPolarity = LL_TIM_BREAK_POLARITY_HIGH;
|
|
|
+ TIM_BDTRInitStruct.BreakFilter = LL_TIM_BREAK_FILTER_FDIV1;
|
|
|
+ TIM_BDTRInitStruct.BreakAFMode = LL_TIM_BREAK_AFMODE_INPUT;
|
|
|
+ TIM_BDTRInitStruct.Break2State = LL_TIM_BREAK2_DISABLE;
|
|
|
+ TIM_BDTRInitStruct.Break2Polarity = LL_TIM_BREAK2_POLARITY_HIGH;
|
|
|
+ TIM_BDTRInitStruct.Break2Filter = LL_TIM_BREAK2_FILTER_FDIV1;
|
|
|
+ TIM_BDTRInitStruct.Break2AFMode = LL_TIM_BREAK_AFMODE_INPUT;
|
|
|
+ TIM_BDTRInitStruct.AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE;
|
|
|
+ LL_TIM_BDTR_Init(TIM1, &TIM_BDTRInitStruct);
|
|
|
+ /* USER CODE BEGIN TIM1_Init 2 */
|
|
|
+
|
|
|
+ /* USER CODE END TIM1_Init 2 */
|
|
|
+ LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
|
|
|
+ /**TIM1 GPIO Configuration
|
|
|
+ PA8 ------> TIM1_CH1
|
|
|
+ PA9 ------> TIM1_CH2
|
|
|
+ PA10 ------> TIM1_CH3
|
|
|
+ PA11 [PA9] ------> TIM1_CH4
|
|
|
+ */
|
|
|
+ GPIO_InitStruct.Pin = PWM_1_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
+ GPIO_InitStruct.Alternate = LL_GPIO_AF_2;
|
|
|
+ LL_GPIO_Init(PWM_1_GPIO_Port, &GPIO_InitStruct);
|
|
|
+
|
|
|
+ GPIO_InitStruct.Pin = PWM_R_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
+ GPIO_InitStruct.Alternate = LL_GPIO_AF_2;
|
|
|
+ LL_GPIO_Init(PWM_R_GPIO_Port, &GPIO_InitStruct);
|
|
|
+
|
|
|
+ GPIO_InitStruct.Pin = PWM_B_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
+ GPIO_InitStruct.Alternate = LL_GPIO_AF_2;
|
|
|
+ LL_GPIO_Init(PWM_B_GPIO_Port, &GPIO_InitStruct);
|
|
|
+
|
|
|
+ GPIO_InitStruct.Pin = PWM_G_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
+ GPIO_InitStruct.Alternate = LL_GPIO_AF_2;
|
|
|
+ LL_GPIO_Init(PWM_G_GPIO_Port, &GPIO_InitStruct);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* @brief TIM3 Initialization Function
|
|
|
* @param None
|
|
@@ -681,9 +803,9 @@ static void MX_TIM3_Init(void)
|
|
|
/* USER CODE BEGIN TIM3_Init 1 */
|
|
|
|
|
|
/* USER CODE END TIM3_Init 1 */
|
|
|
- TIM_InitStruct.Prescaler = 94;
|
|
|
+ TIM_InitStruct.Prescaler = (240 - 1);
|
|
|
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
|
|
- TIM_InitStruct.Autoreload = 255;
|
|
|
+ TIM_InitStruct.Autoreload = 1000;
|
|
|
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
|
|
|
LL_TIM_Init(TIM3, &TIM_InitStruct);
|
|
|
LL_TIM_EnableARRPreload(TIM3);
|
|
@@ -691,20 +813,19 @@ static void MX_TIM3_Init(void)
|
|
|
TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_PWM1;
|
|
|
TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
|
|
|
TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
|
|
|
- TIM_OC_InitStruct.CompareValue = 25;
|
|
|
+ TIM_OC_InitStruct.CompareValue = 500;
|
|
|
TIM_OC_InitStruct.OCPolarity = LL_TIM_OCPOLARITY_HIGH;
|
|
|
LL_TIM_OC_Init(TIM3, LL_TIM_CHANNEL_CH1, &TIM_OC_InitStruct);
|
|
|
LL_TIM_OC_DisableFast(TIM3, LL_TIM_CHANNEL_CH1);
|
|
|
LL_TIM_OC_EnablePreload(TIM3, LL_TIM_CHANNEL_CH2);
|
|
|
- TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
|
|
|
- TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
|
|
|
LL_TIM_OC_Init(TIM3, LL_TIM_CHANNEL_CH2, &TIM_OC_InitStruct);
|
|
|
LL_TIM_OC_DisableFast(TIM3, LL_TIM_CHANNEL_CH2);
|
|
|
LL_TIM_OC_EnablePreload(TIM3, LL_TIM_CHANNEL_CH3);
|
|
|
- TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
|
|
|
- TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
|
|
|
LL_TIM_OC_Init(TIM3, LL_TIM_CHANNEL_CH3, &TIM_OC_InitStruct);
|
|
|
LL_TIM_OC_DisableFast(TIM3, LL_TIM_CHANNEL_CH3);
|
|
|
+ LL_TIM_OC_EnablePreload(TIM3, LL_TIM_CHANNEL_CH4);
|
|
|
+ LL_TIM_OC_Init(TIM3, LL_TIM_CHANNEL_CH4, &TIM_OC_InitStruct);
|
|
|
+ LL_TIM_OC_DisableFast(TIM3, LL_TIM_CHANNEL_CH4);
|
|
|
LL_TIM_SetTriggerOutput(TIM3, LL_TIM_TRGO_RESET);
|
|
|
LL_TIM_DisableMasterSlaveMode(TIM3);
|
|
|
/* USER CODE BEGIN TIM3_Init 2 */
|
|
@@ -716,30 +837,39 @@ static void MX_TIM3_Init(void)
|
|
|
PA6 ------> TIM3_CH1
|
|
|
PA7 ------> TIM3_CH2
|
|
|
PB0 ------> TIM3_CH3
|
|
|
+ PB1 ------> TIM3_CH4
|
|
|
*/
|
|
|
- GPIO_InitStruct.Pin = PWM_R_Pin;
|
|
|
+ GPIO_InitStruct.Pin = PWM_5_Pin;
|
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
GPIO_InitStruct.Alternate = LL_GPIO_AF_1;
|
|
|
- LL_GPIO_Init(PWM_R_GPIO_Port, &GPIO_InitStruct);
|
|
|
+ LL_GPIO_Init(PWM_5_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
- GPIO_InitStruct.Pin = PWM_G_Pin;
|
|
|
+ GPIO_InitStruct.Pin = PWM_4_Pin;
|
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
GPIO_InitStruct.Alternate = LL_GPIO_AF_1;
|
|
|
- LL_GPIO_Init(PWM_G_GPIO_Port, &GPIO_InitStruct);
|
|
|
+ LL_GPIO_Init(PWM_4_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
- GPIO_InitStruct.Pin = PWM_B_Pin;
|
|
|
+ GPIO_InitStruct.Pin = PWM_3_Pin;
|
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
GPIO_InitStruct.Alternate = LL_GPIO_AF_1;
|
|
|
- LL_GPIO_Init(PWM_B_GPIO_Port, &GPIO_InitStruct);
|
|
|
+ LL_GPIO_Init(PWM_3_GPIO_Port, &GPIO_InitStruct);
|
|
|
+
|
|
|
+ GPIO_InitStruct.Pin = PWM_2_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
+ GPIO_InitStruct.Alternate = LL_GPIO_AF_1;
|
|
|
+ LL_GPIO_Init(PWM_2_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -747,6 +877,7 @@ static void MX_TIM3_Init(void)
|
|
|
* @brief TIM14 Initialization Function
|
|
|
* @param None
|
|
|
* @retval None
|
|
|
+ * "Áëèíêîâàíèå" ðàçðÿäàìè, 0,75/0,25 ñåê âêë/âûêë.
|
|
|
*/
|
|
|
static void MX_TIM14_Init(void)
|
|
|
{
|
|
@@ -758,8 +889,6 @@ static void MX_TIM14_Init(void)
|
|
|
LL_TIM_InitTypeDef TIM_InitStruct = {0};
|
|
|
LL_TIM_OC_InitTypeDef TIM_OC_InitStruct = {0};
|
|
|
|
|
|
- LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|
|
-
|
|
|
/* Peripheral clock enable */
|
|
|
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM14);
|
|
|
|
|
@@ -770,34 +899,24 @@ static void MX_TIM14_Init(void)
|
|
|
/* USER CODE BEGIN TIM14_Init 1 */
|
|
|
|
|
|
/* USER CODE END TIM14_Init 1 */
|
|
|
- TIM_InitStruct.Prescaler = 240;
|
|
|
+ TIM_InitStruct.Prescaler = (24000 - 1);
|
|
|
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
|
|
TIM_InitStruct.Autoreload = 1000;
|
|
|
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
|
|
|
LL_TIM_Init(TIM14, &TIM_InitStruct);
|
|
|
LL_TIM_EnableARRPreload(TIM14);
|
|
|
- LL_TIM_OC_EnablePreload(TIM14, LL_TIM_CHANNEL_CH1);
|
|
|
- TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_PWM1;
|
|
|
+ TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_INACTIVE;
|
|
|
TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
|
|
|
TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
|
|
|
TIM_OC_InitStruct.CompareValue = 750;
|
|
|
TIM_OC_InitStruct.OCPolarity = LL_TIM_OCPOLARITY_HIGH;
|
|
|
LL_TIM_OC_Init(TIM14, LL_TIM_CHANNEL_CH1, &TIM_OC_InitStruct);
|
|
|
LL_TIM_OC_DisableFast(TIM14, LL_TIM_CHANNEL_CH1);
|
|
|
+ LL_TIM_OC_EnablePreload(TIM14, LL_TIM_CHANNEL_CH1);
|
|
|
/* USER CODE BEGIN TIM14_Init 2 */
|
|
|
-
|
|
|
+ TIM14->DIER |= TIM_DIER_UIE;
|
|
|
+ TIM14->DIER |= TIM_DIER_CC1IE;
|
|
|
/* USER CODE END TIM14_Init 2 */
|
|
|
- LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOB);
|
|
|
- /**TIM14 GPIO Configuration
|
|
|
- PB1 ------> TIM14_CH1
|
|
|
- */
|
|
|
- GPIO_InitStruct.Pin = PWM_T_Pin;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
|
- GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
|
|
- GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
- GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
|
|
|
- LL_GPIO_Init(PWM_T_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -827,7 +946,7 @@ static void MX_TIM16_Init(void)
|
|
|
/* USER CODE BEGIN TIM16_Init 1 */
|
|
|
|
|
|
/* USER CODE END TIM16_Init 1 */
|
|
|
- TIM_InitStruct.Prescaler = 24;
|
|
|
+ TIM_InitStruct.Prescaler = (24 - 1);
|
|
|
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
|
|
TIM_InitStruct.Autoreload = 1000;
|
|
|
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
|
|
@@ -886,7 +1005,7 @@ static void MX_TIM17_Init(void)
|
|
|
/* USER CODE BEGIN TIM17_Init 1 */
|
|
|
|
|
|
/* USER CODE END TIM17_Init 1 */
|
|
|
- TIM_InitStruct.Prescaler = 240;
|
|
|
+ TIM_InitStruct.Prescaler = (240 - 1);
|
|
|
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
|
|
TIM_InitStruct.Autoreload = 1000;
|
|
|
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
|
|
@@ -1031,6 +1150,9 @@ static void MX_GPIO_Init(void)
|
|
|
LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOC);
|
|
|
LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);
|
|
|
|
|
|
+ /**/
|
|
|
+ LL_GPIO_ResetOutputPin(UART_EN_GPIO_Port, UART_EN_Pin);
|
|
|
+
|
|
|
/**/
|
|
|
LL_GPIO_ResetOutputPin(LC0_GPIO_Port, LC0_Pin);
|
|
|
|
|
@@ -1049,6 +1171,30 @@ static void MX_GPIO_Init(void)
|
|
|
/**/
|
|
|
LL_GPIO_ResetOutputPin(Latch_GPIO_Port, Latch_Pin);
|
|
|
|
|
|
+ /**/
|
|
|
+ LL_EXTI_SetEXTISource(LL_EXTI_CONFIG_PORTC, LL_EXTI_CONFIG_LINE14);
|
|
|
+
|
|
|
+ /**/
|
|
|
+ EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_14;
|
|
|
+ EXTI_InitStruct.LineCommand = ENABLE;
|
|
|
+ EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
|
|
|
+ EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_RISING;
|
|
|
+ LL_EXTI_Init(&EXTI_InitStruct);
|
|
|
+
|
|
|
+ /**/
|
|
|
+ LL_GPIO_SetPinPull(IRQ_GPIO_Port, IRQ_Pin, LL_GPIO_PULL_UP);
|
|
|
+
|
|
|
+ /**/
|
|
|
+ LL_GPIO_SetPinMode(IRQ_GPIO_Port, IRQ_Pin, LL_GPIO_MODE_INPUT);
|
|
|
+
|
|
|
+ /**/
|
|
|
+ GPIO_InitStruct.Pin = UART_EN_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
|
|
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
|
|
|
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
+ LL_GPIO_Init(UART_EN_GPIO_Port, &GPIO_InitStruct);
|
|
|
+
|
|
|
/**/
|
|
|
GPIO_InitStruct.Pin = LC0_Pin;
|
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
|
@@ -1089,36 +1235,6 @@ static void MX_GPIO_Init(void)
|
|
|
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
|
|
|
LL_GPIO_Init(SHDN_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
- /**/
|
|
|
- GPIO_InitStruct.Pin = LL_GPIO_PIN_5;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
- LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
|
-
|
|
|
- /**/
|
|
|
- GPIO_InitStruct.Pin = LL_GPIO_PIN_2;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
- LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
|
-
|
|
|
- /**/
|
|
|
- GPIO_InitStruct.Pin = BTN1_Pin;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
|
|
- LL_GPIO_Init(BTN1_GPIO_Port, &GPIO_InitStruct);
|
|
|
-
|
|
|
- /**/
|
|
|
- GPIO_InitStruct.Pin = BTN2_Pin;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
|
|
- LL_GPIO_Init(BTN2_GPIO_Port, &GPIO_InitStruct);
|
|
|
-
|
|
|
- /**/
|
|
|
- GPIO_InitStruct.Pin = BTN3_Pin;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
|
|
- LL_GPIO_Init(BTN3_GPIO_Port, &GPIO_InitStruct);
|
|
|
-
|
|
|
/**/
|
|
|
GPIO_InitStruct.Pin = BTN4_Pin;
|
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
@@ -1126,10 +1242,10 @@ static void MX_GPIO_Init(void)
|
|
|
LL_GPIO_Init(BTN4_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
/**/
|
|
|
- GPIO_InitStruct.Pin = LL_GPIO_PIN_12;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
- LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
|
+ GPIO_InitStruct.Pin = BTN1_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
|
|
+ LL_GPIO_Init(BTN1_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
/**/
|
|
|
GPIO_InitStruct.Pin = Latch_Pin;
|
|
@@ -1140,34 +1256,22 @@ static void MX_GPIO_Init(void)
|
|
|
LL_GPIO_Init(Latch_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
/**/
|
|
|
- GPIO_InitStruct.Pin = UART_EN_Pin;
|
|
|
- GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
|
|
- GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
|
|
|
- GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
- LL_GPIO_Init(UART_EN_GPIO_Port, &GPIO_InitStruct);
|
|
|
+ GPIO_InitStruct.Pin = BTN2_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
|
|
+ LL_GPIO_Init(BTN2_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
/**/
|
|
|
GPIO_InitStruct.Pin = UART_ST_Pin;
|
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
- GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
|
|
LL_GPIO_Init(UART_ST_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
/**/
|
|
|
- LL_EXTI_SetEXTISource(LL_EXTI_CONFIG_PORTC, LL_EXTI_CONFIG_LINE14);
|
|
|
-
|
|
|
- /**/
|
|
|
- EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_14;
|
|
|
- EXTI_InitStruct.LineCommand = ENABLE;
|
|
|
- EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
|
|
|
- EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_RISING;
|
|
|
- LL_EXTI_Init(&EXTI_InitStruct);
|
|
|
-
|
|
|
- /**/
|
|
|
- LL_GPIO_SetPinPull(IRQ_GPIO_Port, IRQ_Pin, LL_GPIO_PULL_UP);
|
|
|
-
|
|
|
- /**/
|
|
|
- LL_GPIO_SetPinMode(IRQ_GPIO_Port, IRQ_Pin, LL_GPIO_MODE_INPUT);
|
|
|
+ GPIO_InitStruct.Pin = BTN3_Pin;
|
|
|
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
|
|
+ GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|
|
+ LL_GPIO_Init(BTN3_GPIO_Port, &GPIO_InitStruct);
|
|
|
|
|
|
/* EXTI interrupt init*/
|
|
|
NVIC_SetPriority(EXTI4_15_IRQn, 0);
|
|
@@ -1196,8 +1300,11 @@ static void showDigit(tube_pos_t pos, uint8_t dig)
|
|
|
tubesBuffer[0] = 0;
|
|
|
tubesBuffer[1] &= nixieCathodeMask[Tube_E][1];
|
|
|
if (Tube_E != 0xf) {
|
|
|
+ TUBE_E_ON;
|
|
|
tubesBuffer[0] = (uint8_t)(nixieCathodeMap[Tube_E][dig] >> 8);
|
|
|
tubesBuffer[1] |= (uint8_t)(nixieCathodeMap[Tube_E][dig]);
|
|
|
+ } else {
|
|
|
+ TUBE_E_OFF;
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -1205,8 +1312,11 @@ static void showDigit(tube_pos_t pos, uint8_t dig)
|
|
|
tubesBuffer[1] &= nixieCathodeMask[Tube_D][0];
|
|
|
tubesBuffer[2] &= nixieCathodeMask[Tube_D][1];
|
|
|
if (Tube_D != 0xf) {
|
|
|
+ TUBE_D_ON;
|
|
|
tubesBuffer[1] |= (uint8_t)(nixieCathodeMap[Tube_D][dig] >> 8);
|
|
|
tubesBuffer[2] |= (uint8_t)(nixieCathodeMap[Tube_D][dig]);
|
|
|
+ } else {
|
|
|
+ TUBE_D_OFF;
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -1214,8 +1324,11 @@ static void showDigit(tube_pos_t pos, uint8_t dig)
|
|
|
tubesBuffer[2] &= nixieCathodeMask[Tube_B][0];
|
|
|
tubesBuffer[3] &= nixieCathodeMask[Tube_B][1];
|
|
|
if (Tube_B != 0xf) {
|
|
|
+ TUBE_B_ON;
|
|
|
tubesBuffer[2] |= (uint8_t)(nixieCathodeMap[Tube_B][dig] >> 8);
|
|
|
tubesBuffer[3] |= (uint8_t)(nixieCathodeMap[Tube_B][dig]);
|
|
|
+ } else {
|
|
|
+ TUBE_B_OFF;
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -1223,8 +1336,11 @@ static void showDigit(tube_pos_t pos, uint8_t dig)
|
|
|
tubesBuffer[3] &= nixieCathodeMask[Tube_A][0];
|
|
|
tubesBuffer[4] = 0;
|
|
|
if (Tube_A != 0xf) {
|
|
|
+ TUBE_A_ON;
|
|
|
tubesBuffer[3] |= (uint8_t)(nixieCathodeMap[Tube_A][dig] >> 8);
|
|
|
tubesBuffer[4] = (uint8_t)(nixieCathodeMap[Tube_A][dig]);
|
|
|
+ } else {
|
|
|
+ TUBE_A_OFF;
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -1233,6 +1349,32 @@ static void showDigit(tube_pos_t pos, uint8_t dig)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * @brief Âûâîä HEX çíà÷åíèé öâåòà â òàéìåð.
|
|
|
+ * @param : RGB value in range 0x00-0xFF
|
|
|
+ * @retval : None
|
|
|
+ */
|
|
|
+static void Color_RGB(uint8_t r, uint8_t g, uint8_t b) {
|
|
|
+ /* Áîëåå áûñòðûé âàðèàíò, íà ïðîáó. */
|
|
|
+ COLOR_R(r * 4);
|
|
|
+ COLOR_G(g * 4);
|
|
|
+ COLOR_B(b * 4);
|
|
|
+
|
|
|
+ /* Ïðåäâàðèòåëüíûé îáñ÷¸ò â ïåðåìåííûå ñäåëàí äëÿ òîãî,
|
|
|
+ ÷òî-áû âûâåñòè çíà÷åíèÿ â òàéìåð ìàêñèìàëüíî îäíîâðåìåííî. */
|
|
|
+/*
|
|
|
+ uint32_t val_r, val_g, val_b;
|
|
|
+
|
|
|
+ val_r = ((uint32_t)(r * 1000) + 128) / 256;
|
|
|
+ val_g = ((uint32_t)(g * 1000) + 128) / 256;
|
|
|
+ val_b = ((uint32_t)(b * 1000) + 128) / 256;
|
|
|
+
|
|
|
+ COLOR_R((uint16_t)val_r);
|
|
|
+ COLOR_G((uint16_t)val_g);
|
|
|
+ COLOR_B((uint16_t)val_b);
|
|
|
+*/
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* @brief Îáðàáîòêà êíîïîê.
|
|
|
* @param : None
|
|
@@ -1240,7 +1382,7 @@ static void showDigit(tube_pos_t pos, uint8_t dig)
|
|
|
*/
|
|
|
static void btnProcess(void) {
|
|
|
/* get pin state */
|
|
|
- uint32_t pins = BTN_PORT->IDR & BTN_PINS;
|
|
|
+ uint32_t pins = BTNS_STATE;
|
|
|
|
|
|
int i;
|
|
|
for (i=0; i<BTN_NUM; i++) {
|
|
@@ -1271,25 +1413,30 @@ static void btnProcess(void) {
|
|
|
|
|
|
void in15Off(void) {
|
|
|
IN15_OFF;
|
|
|
+ TUBE_C_OFF;
|
|
|
}
|
|
|
|
|
|
void in15Minus(void) {
|
|
|
IN15_OFF;
|
|
|
+ TUBE_C_ON;
|
|
|
IN15_Minus;
|
|
|
}
|
|
|
|
|
|
void in15Plus(void) {
|
|
|
IN15_OFF;
|
|
|
+ TUBE_C_ON;
|
|
|
IN15_Plus;
|
|
|
}
|
|
|
|
|
|
void in15Percent(void) {
|
|
|
IN15_OFF;
|
|
|
+ TUBE_C_ON;
|
|
|
IN15_Percent;
|
|
|
}
|
|
|
|
|
|
void in15P(void) {
|
|
|
IN15_OFF;
|
|
|
+ TUBE_C_ON;
|
|
|
IN15_P;
|
|
|
}
|
|
|
|