X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=nucleo-test%2FSrc%2Fmain.c;h=fdc17e9056d538144f80a740a36c0ed72d5d1f49;hb=228f98a7bea12a3cc18aab18f50951d3256bc5fe;hp=ec83544e774cf5d3a3ed2e335ba7cabbe66e6562;hpb=985bd34a1d699d8870cd4be9e170bcb80dadcf3a;p=home-hw.git diff --git a/nucleo-test/Src/main.c b/nucleo-test/Src/main.c index ec83544..fdc17e9 100644 --- a/nucleo-test/Src/main.c +++ b/nucleo-test/Src/main.c @@ -54,8 +54,10 @@ static void LL_Init(void); void SystemClock_Config(void); static void MX_GPIO_Init(void); +static void MX_DMA_Init(void); static void MX_USART2_UART_Init(void); static void MX_I2C1_Init(void); +static void MX_TIM3_Init(void); /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ @@ -95,8 +97,10 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); + MX_DMA_Init(); MX_USART2_UART_Init(); MX_I2C1_Init(); + MX_TIM3_Init(); /* USER CODE BEGIN 2 */ run_test(); @@ -239,6 +243,82 @@ static void MX_I2C1_Init(void) } +/* TIM3 init function */ +static void MX_TIM3_Init(void) +{ + + LL_TIM_InitTypeDef TIM_InitStruct; + LL_TIM_OC_InitTypeDef TIM_OC_InitStruct; + + LL_GPIO_InitTypeDef GPIO_InitStruct; + + /* Peripheral clock enable */ + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3); + + /* TIM3 DMA Init */ + + /* TIM3_CH1_TRIG Init */ + LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_4, LL_DMA_DIRECTION_PERIPH_TO_MEMORY); + + LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_4, LL_DMA_PRIORITY_VERYHIGH); + + LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_4, LL_DMA_MODE_NORMAL); + + LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_4, LL_DMA_PERIPH_NOINCREMENT); + + LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_4, LL_DMA_MEMORY_NOINCREMENT); + + LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_4, LL_DMA_PDATAALIGN_WORD); + + LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_4, LL_DMA_MDATAALIGN_WORD); + + /* TIM3 interrupt Init */ + NVIC_SetPriority(TIM3_IRQn, 0); + NVIC_EnableIRQ(TIM3_IRQn); + + TIM_InitStruct.Prescaler = 31; + TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct.Autoreload = 0; + TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + LL_TIM_Init(TIM3, &TIM_InitStruct); + + LL_TIM_DisableARRPreload(TIM3); + + LL_TIM_SetClockSource(TIM3, LL_TIM_CLOCKSOURCE_INTERNAL); + + TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_FROZEN; + TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct.CompareValue = 0; + 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); + + TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_ACTIVE; + 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_SetTriggerOutput(TIM3, LL_TIM_TRGO_RESET); + + LL_TIM_DisableMasterSlaveMode(TIM3); + + /**TIM3 GPIO Configuration + PA7 ------> TIM3_CH2 + */ + GPIO_InitStruct.Pin = THERMO_Pin; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_1; + LL_GPIO_Init(THERMO_GPIO_Port, &GPIO_InitStruct); + +} + /* USART2 init function */ static void MX_USART2_UART_Init(void) { @@ -289,6 +369,22 @@ static void MX_USART2_UART_Init(void) } +/** + * Enable DMA controller clock + */ +static void MX_DMA_Init(void) +{ + /* Init with LL driver */ + /* DMA controller clock enable */ + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1); + + /* DMA interrupt init */ + /* DMA1_Channel4_5_IRQn interrupt configuration */ + NVIC_SetPriority(DMA1_Channel4_5_IRQn, 0); + NVIC_EnableIRQ(DMA1_Channel4_5_IRQn); + +} + /** Configure pins as * Analog * Input