diff options
Diffstat (limited to 'Projects/NUCLEO-WB15CC/Applications/BLE_LLD/BLE_LLD_Pressbutton/Core/Src/main.c')
-rw-r--r-- | Projects/NUCLEO-WB15CC/Applications/BLE_LLD/BLE_LLD_Pressbutton/Core/Src/main.c | 135 |
1 files changed, 36 insertions, 99 deletions
diff --git a/Projects/NUCLEO-WB15CC/Applications/BLE_LLD/BLE_LLD_Pressbutton/Core/Src/main.c b/Projects/NUCLEO-WB15CC/Applications/BLE_LLD/BLE_LLD_Pressbutton/Core/Src/main.c index 05eb692a4..03067aa28 100644 --- a/Projects/NUCLEO-WB15CC/Applications/BLE_LLD/BLE_LLD_Pressbutton/Core/Src/main.c +++ b/Projects/NUCLEO-WB15CC/Applications/BLE_LLD/BLE_LLD_Pressbutton/Core/Src/main.c @@ -68,12 +68,11 @@ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ -TIM_HandleTypeDef htim2; + /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ static void MX_DMA_Init(void); -static void MX_TIM2_Init(void); /* USER CODE BEGIN PFP */ static void SystemClock_Config(void); @@ -116,29 +115,24 @@ int main(void) Reset_Device(); Config_HSE(); /* USER CODE END Init */ - + /* Configure the system clock on HSE without using PLL and the periph clock needed by this application */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ PeriphClock_Config(); Init_Exti(); - + /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_DMA_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - if (HAL_TIM_Base_Start(&htim2) != HAL_OK) - { - Error_Handler(); - } + /* USER CODE END 2 */ - + /* Init code for STM32_WPAN */ APPE_Init(); - + /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) @@ -163,7 +157,7 @@ void SystemClock_Config_HSE(uint32_t usePLL) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - + /* First, just set MSI ON (with the 32Mhz range) in case it was OFF, without any update on PLL */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; @@ -183,7 +177,7 @@ void SystemClock_Config_HSE(uint32_t usePLL) /* Initialization Error */ Error_Handler(); } - + /* Configure HSE and PLL if needed*/ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; @@ -201,9 +195,9 @@ void SystemClock_Config_HSE(uint32_t usePLL) { Error_Handler(); } - + /* Configure the system clock source and the dividers according to the fact that system clock source is 32Mhz */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4 | RCC_CLOCKTYPE_HCLK2 | RCC_CLOCKTYPE_HCLK | + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4 | RCC_CLOCKTYPE_HCLK2 | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; if (usePLL == 1) RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; @@ -218,10 +212,10 @@ void SystemClock_Config_HSE(uint32_t usePLL) { Error_Handler(); } - + // Note that function UTILS_SetFlashLatency() could be used to set the correct Flash latency // (with 32Mhz, 2WS are needed if the range is changed to 1V instead of 1.2V) - + /* Disable MSI Oscillator as the MSI is no more needed by the application */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_OFF; @@ -243,7 +237,7 @@ void SystemClock_Config_MSI(uint32_t usePLL) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - + /* First, just set HSE ON (with the 32Mhz range) in case it was OFF, without any update on PLL */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; @@ -261,7 +255,7 @@ void SystemClock_Config_MSI(uint32_t usePLL) /* Initialization Error */ Error_Handler(); } - + /* Configure MSI and PLL if needed*/ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; @@ -282,9 +276,9 @@ void SystemClock_Config_MSI(uint32_t usePLL) /* Initialization Error */ Error_Handler(); } - + /* Configure the system clock source and the dividers according to the fact that system clock source is 32Mhz */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4 | RCC_CLOCKTYPE_HCLK2 | RCC_CLOCKTYPE_HCLK | + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4 | RCC_CLOCKTYPE_HCLK2 | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; if (usePLL == 1) RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; @@ -299,7 +293,7 @@ void SystemClock_Config_MSI(uint32_t usePLL) { Error_Handler(); } - + /* HSE cannot be stopped while using RF */ #if 0 /* Disable HSE Oscillator as the HSE is no more needed by the application */ @@ -320,19 +314,19 @@ void SystemClock_Config_MSI(uint32_t usePLL) * *************************************************************/ /** - * @brief System Clock Configuration : must be called during application start-up + * @brief System Clock Configuration : must be called during application start-up * @retval None */ static void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - + /* Configure LSE Drive Capability */ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); /* Assuming that MSI is enabled by default after boot, lets go to HSE without using PLL */ SystemClock_Config_HSE(0); - + /* Configure Others clock */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI2; @@ -348,40 +342,28 @@ static void SystemClock_Config(void) } } -/** +/** * Enable DMA controller clock */ -static void MX_DMA_Init(void) +static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMAMUX1_CLK_ENABLE(); __HAL_RCC_DMA1_CLK_ENABLE(); -#ifdef STM32WB35xx - __HAL_RCC_DMA2_CLK_ENABLE(); -#endif - + /* DMA interrupt init */ -#ifdef STM32WB35xx /* DMA1_Channel4_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn); - /* DMA2_Channel4_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA2_Channel4_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA2_Channel4_IRQn); -#else - /* DMA1_Channel1_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); - /* DMA1_Channel2_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn); -#endif + /* DMA1_Channel5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); } static void PeriphClock_Config(void) { RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - + #if USE_SMPS_ENABLED_BY_DEFAULT PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS | RCC_PERIPHCLK_RFWAKEUP | RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_LPUART1; PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; @@ -393,7 +375,7 @@ static void PeriphClock_Config(void) { Error_Handler(); } - + /* Initialize SMPS here like in BLE applis */ LL_PWR_SMPS_SetStartupCurrent(LL_PWR_SMPS_STARTUP_CURRENT_80MA); LL_PWR_SMPS_SetOutputVoltageLevel(LL_PWR_SMPS_OUTPUT_VOLTAGE_1V40); @@ -408,7 +390,7 @@ static void PeriphClock_Config(void) Error_Handler(); } #endif - + return; } @@ -433,10 +415,10 @@ static void Reset_Device( void ) { #if ( CFG_HW_RESET_BY_FW == 1 ) Reset_BackupDomain(); - + Reset_IPCC(); #endif - + return; } @@ -482,17 +464,17 @@ static void Reset_BackupDomain( void ) if ((LL_RCC_IsActiveFlag_PINRST() != FALSE) && (LL_RCC_IsActiveFlag_SFTRST() == FALSE)) { HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */ - + /** * Write twice the value to flush the APB-AHB bridge * This bit shall be written in the register before writing the next one */ HAL_PWR_EnableBkUpAccess(); - + __HAL_RCC_BACKUPRESET_FORCE(); __HAL_RCC_BACKUPRESET_RELEASE(); } - + return; } @@ -501,53 +483,8 @@ static void Init_Exti( void ) /**< Disable all wakeup interrupt on CPU1 except LPUART(25), IPCC(36), HSEM(38) */ LL_EXTI_DisableIT_0_31( (~0) & (~(LL_EXTI_LINE_25)) ); LL_EXTI_DisableIT_32_63( (~0) & (~(LL_EXTI_LINE_36 | LL_EXTI_LINE_38)) ); - - return; -} - -/** - * @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}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = PRESCALER_VALUE; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = PERIOD_VALUE; - 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(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ + return; } /************************************************************* @@ -606,7 +543,7 @@ void Error_Handler(void) * @retval None */ void assert_failed(uint8_t *file, uint32_t line) -{ +{ /* USER CODE BEGIN assert_failed */ /* 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) */ |