feat: add hse/hsi init functions to bsp

This commit is contained in:
IOsetting 2023-02-16 22:27:03 +08:00
parent f2634a8d71
commit 2d498d808b
3 changed files with 69 additions and 15 deletions

View File

@ -14,7 +14,7 @@ static void APP_DMAConfig(void);
int main(void)
{
BSP_HSI_48MConfig();
BSP_HSI_PLL_48MConfig();
BSP_USART_Config(115200);
printf("ADC Timer Trigger DMA Demo\r\nClock: %ld\r\n", SystemCoreClock);
@ -29,6 +29,17 @@ int main(void)
while (1);
}
static void APP_TimerInit(void)
{
LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_TIM1);
LL_TIM_SetPrescaler(TIM1, (SystemCoreClock / 6000) - 1);
LL_TIM_SetAutoReload(TIM1, 6000 - 1);
/* Triggered by update */
LL_TIM_SetTriggerOutput(TIM1, LL_TIM_TRGO_UPDATE);
LL_TIM_EnableCounter(TIM1);
}
static void APP_ADCConfig(void)
{
__IO uint32_t backup_setting_adc_dma_transfer = 0;
@ -79,18 +90,6 @@ static void APP_ADCConfig(void)
LL_ADC_Enable(ADC1);
}
static void APP_TimerInit(void)
{
LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_TIM1);
/* Set period to 48000000 for 48MHz clock */
LL_TIM_SetPrescaler(TIM1, 6000 - 1);
LL_TIM_SetAutoReload(TIM1, 8000 - 1);
/* Triggered by update */
LL_TIM_SetTriggerOutput(TIM1, LL_TIM_TRGO_UPDATE);
LL_TIM_EnableCounter(TIM1);
}
static void APP_DMAConfig(void)
{
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1);

View File

@ -24,7 +24,10 @@ extern "C" {
#include "py32f0xx_ll_gpio.h"
#include "py32f0xx_ll_usart.h"
void BSP_HSI_48MConfig(void);
void BSP_HSI_PLL_48MConfig(void);
void BSP_HSI_24MConfig(void);
void BSP_HSE_PLL_Config(void);
void BSP_HSE_Config(void);
#ifdef __cplusplus
}

View File

@ -1,6 +1,6 @@
#include "py32f0xx_bsp_clock.h"
void BSP_HSI_48MConfig(void)
void BSP_HSI_PLL_48MConfig(void)
{
LL_UTILS_ClkInitTypeDef UTILS_ClkInitStruct;
@ -17,3 +17,55 @@ void BSP_HSI_48MConfig(void)
LL_InitTick(48000000, 1000U);
}
void BSP_HSI_24MConfig(void)
{
LL_RCC_HSI_Enable();
LL_RCC_HSI_SetCalibFreq(LL_RCC_HSICALIBRATION_24MHz);
while(LL_RCC_HSI_IsReady() != 1);
LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSISYS);
while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSISYS);
LL_FLASH_SetLatency(LL_FLASH_LATENCY_0);
LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
/* Update global SystemCoreClock(or through SystemCoreClockUpdate function) */
LL_SetSystemCoreClock(24000000);
/* Re-init frequency of SysTick source */
LL_InitTick(24000000, 1000U);
}
void BSP_HSE_PLL_Config(void)
{
LL_UTILS_ClkInitTypeDef UTILS_ClkInitStruct;
LL_RCC_HSE_Enable();
LL_RCC_HSE_SetFreqRegion(LL_RCC_HSE_16_32MHz);
while(LL_RCC_HSE_IsReady() != 1);
UTILS_ClkInitStruct.AHBCLKDivider = LL_RCC_SYSCLK_DIV_1;
UTILS_ClkInitStruct.APB1CLKDivider = LL_RCC_APB1_DIV_1;
LL_PLL_ConfigSystemClock_HSE(HSE_VALUE, LL_UTILS_HSEBYPASS_OFF, &UTILS_ClkInitStruct);
/* Re-init frequency of SysTick source */
LL_InitTick(HSE_VALUE * 2, 1000U);
}
void BSP_HSE_Config(void)
{
LL_RCC_HSE_Enable();
LL_RCC_HSE_SetFreqRegion(LL_RCC_HSE_16_32MHz);
while(LL_RCC_HSE_IsReady() != 1);
LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSE);
while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
/* Update global SystemCoreClock(or through SystemCoreClockUpdate function) */
LL_SetSystemCoreClock(HSE_VALUE);
/* Re-init frequency of SysTick source */
LL_InitTick(HSE_VALUE, 1000U);
}