STM32L432的内部MSI晶振使用

编程入门 行业动态 更新时间:2024-10-09 12:35:46

STM32L432的内部MSI<a href=https://www.elefans.com/category/jswz/34/1764914.html style=晶振使用"/>

STM32L432的内部MSI晶振使用

----记录一下STM32L432芯片的功能开发使用。

-由于板载尺寸的尺寸限制,硬件未配置外置晶振,故而只能使用内部晶振作为系统时钟源。
配置流程如下:

/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct   = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct   = {0};RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
/*可以使用四种不同的时钟源来驱动系统时钟(SYSCLK): • HSI (高速内部) 16 MHz RC 振荡器时钟• MSI (多速内部)RC 振荡器时钟• HSE 振荡器时钟,4 至 48 MHz• PLL 时钟从复位中启动后, MSI用作系统时钟源,配置为4 MHz。器件具有以下附加时钟源:• 32 kHz低速内部RC (LSI RC),该 RC 用于驱动独立看门狗,也可选择提供给hrtc 用于停止 / 待机模式下的自动唤醒。• 32.768 kHz低速外部晶振(LSE 晶振),用于驱动实时时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗。MSI 时钟信号是从内部 RC 振荡器生成的。其频率范围可通过时钟控制寄存器 (RCC_CR)中的 MSIRANGE[3:0] 位进行软件调节。有 12 个频率范围可用:100 kHz、200 kHz、400 kHz、800 kHz、1 MHz、2 MHz、4 MHz(默认值)、8 MHz、16 MHz、24 MHz、32 MHz和 48 MHz。在从复位重启、从待机、关断低功耗模式后唤醒, MSI 时钟被用作系统时钟。从复位重启后,MSI 频率被置位其默认值 4 MHz。
*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_MSI;// 设置需要配置的振荡器为MSI/LSIRCC_OscInitStruct.LSIState       = RCC_LSI_ON;   // 激活LSI时钟(32kHz低速内部RC振荡器时钟)RCC_OscInitStruct.MSIState       = RCC_MSI_ON;   // 激活MSI时钟(100KHz-48MHz多速内部RC振荡器时钟)RCC_OscInitStruct.MSICalibrationValue = 0;RCC_OscInitStruct.MSIClockRange  =  RCC_MSIRANGE_11; //配置为48MHzRCC_OscInitStruct.PLL.PLLState   = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) Error_Handler();// 需要配置的时钟HCLK(APB1/APB2总线时钟源)、SYSCLK(系统时钟源)、PCLK1(APB1上外设时钟源)、PCLK2(APB2上外设时钟源)RCC_ClkInitStruct.ClockType      = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource   = RCC_SYSCLKSOURCE_MSI;// 配置系统时钟为MSI输入,48MHzRCC_ClkInitStruct.AHBCLKDivider  = RCC_SYSCLK_DIV1;     // AHB时钟为系统时钟1分频,48MHz/1 =48MHzRCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;       // APB1时钟为系统时钟1分频,48MHz/1 =48MHzRCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;       // APB2时钟为系统时钟1分频,48MHz/1 =48MHz  /*
--@from --RM0390 Reference manual---
--->>FLASH_ACR	0 WS (1 CPU cycle)    0 < HCLK ≤ 30    0 <HCLK ≤ 24      0 < HCLK ≤ 22      0 < HCLK ≤ 201 WS (2 CPU cycles)  30 < HCLK ≤ 60   24 < HCLK ≤ 48    22 < HCLK ≤ 44     20 < HCLK ≤ 402 WS (3 CPU cycles)  60 < HCLK ≤ 90   48 < HCLK ≤ 72    44 < HCLK ≤ 66     40 < HCLK ≤ 603 WS (4 CPU cycles)  90 < HCLK ≤ 120  72 < HCLK ≤ 96    66 < HCLK ≤ 88     60 < HCLK ≤ 804 WS (5 CPU cycles) 120 < HCLK ≤ 150  96 < HCLK ≤ 120   88 < HCLK ≤ 110    80 < HCLK ≤ 1005 WS (6 CPU cycles) 150 < HCLK ≤ 180 120 < HCLK ≤ 144  110 < HCLK ≤ 132   100 < HCLK ≤ 1206 WS (7 CPU cycles)                  144 < HCLK ≤ 168  132 < HCLK ≤ 154   120 < HCLK ≤ 1407 WS (8 CPU cycles)                  168 <HCLK ≤ 180   154 < HCLK ≤ 176   140 < HCLK ≤ 1608 WS (9 CPU cycles)                                    176 < HCLK ≤ 180   160 < HCLK ≤ 168	
*/	if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) Error_Handler();// 需要初始化的外设时钟:USART1/USART2/I2C1/RTCPeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_I2C1|RCC_PERIPHCLK_RTC;PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;PeriphClkInit.I2c1ClockSelection   = RCC_I2C1CLKSOURCE_PCLK1; PeriphClkInit.RTCClockSelection    = RCC_RTCCLKSOURCE_LSI;//RTC时钟源为LSI	if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) Error_Handler();// 配置内部主稳压器输出电压,配置为稳压器输出电压范围1模式,也就是:典型输出电压为1.2V,系统频率高达80MHzif (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) Error_Handler();/__HAL_RCC_RTC_ENABLE();//RTC时钟使能(功能需要时)// 配置系统定时器中断时间,配置为HCLK的千分频HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);// 配置系统定时器,配置为HCLKHAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);// 系统定时器中断配置,设置系统定时器中断优先级最高(为0),且子优先级最高(为0)HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}

更多推荐

STM32L432的内部MSI晶振使用

本文发布于:2024-03-12 07:00:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1730951.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:晶振   MSI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!