开发板搭载STM32U083基于Arm Cortex -M0+内核的微控制器,具有256Kbytes闪存和40Kbytes SRAM.,主频可达56M。
超低功耗功能(超低功耗设备)
•1.71 V至3.6 V电源
•-40°C至85/125°C温度范围
•VBAT模式:130 nA(带RTC和9 x 32位备份寄存器)
•关闭模式(6个唤醒引脚):16 nA
•待机模式(6个唤醒引脚):160 nA带RTC,30 nA不带RTC
•停止2模式:带RTC的825 nA,不带RTC的695 nA
•运行模式(LDO模式):52μA/MHz
•批量采集模式(BAM)
•从停止模式唤醒4μs
•断电复位(BOR)
在 STM32单片机有6个重要的时钟源,为 HSI、 HSE、 LSI、 LSE、 MSI、 PLL。其中PLL 实际是分为三个时钟源,分别为主 PLL 和PLLISAI1 和 PLLSAI2。从时钟频率来分可以分为高速时钟源和低速时钟源,在这 6个中 :HSI, HSE, MSI 以及 PLL 是高速时钟,LSI和LSE 是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,其他的是内部时钟源。
① LSI 是低速内部时钟, RC 振荡器,频率为 32kHz 左右。供独立看门狗、 RTC 和 LCD使用。
② LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。
③ HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz-48MHz。我们的开发板接的是 8MHz 的晶振。 HSE 也可以直接做为系统时钟或者 PLL 输入。
④ HSI 是高速内部时钟, RC 振荡器, 频率为 16MHz。可以直接作为系统时钟或者用作PLL 输入。
⑤ MSI 时钟信号由内部 RC 振荡器产生。其频率范围可通过时钟控制寄存器(RCC_CR)中的 MSIRANGE[3:0]位进行调整。
⑥ PLL 为锁相环倍频输出。
U83功能系统:
U083系统时钟源:两个不同的源可以提供SYSCLK系统时钟:4-48 MHz高速振荡器,带外部晶体或陶瓷谐振器(HSE)。它可以提供时钟到系统PLL。HSE也可以配置为外部时钟的旁路模式。16 MHz高速内部RC振荡器(HSI16),可通过软件进行微调。它可以为提供时钟
系统PLL。多速内部RC振荡器(MSI),可通过软件进行微调,能够生成12个频率形式100kHz至48MHz。当系统(LSE)中有32.768 kHz时钟源可用时,MSI频率可以通过硬件自动调整,达到优于±0.25%的精度。这个MSI可以提供PLL。系统PLL,可由HSE、HSI16或MSI供电。它提供高达56 MHz的系统时钟。
开发板通过SB27获得STLINK始终,SB27是断开的。晶振没有焊接,用MSI内部时钟。
配置:
- void SystemClock_Config(void)
- {
- RCC_OscInitTypeDef RCC_OscInitStruct = {0};
- RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
- /** Configure the main internal regulator output voltage
- */
- HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
- /** Initializes the RCC Oscillators according to the specified parameters
- * in the RCC_OscInitTypeDef structure.
- */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI;
- RCC_OscInitStruct.MSIState = RCC_MSI_ON;
- RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
- RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
- {
- Error_Handler();
- }
- /** Initializes the CPU, AHB and APB buses clocks
- */
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
- |RCC_CLOCKTYPE_PCLK1;
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
- {
- Error_Handler();
- }
- }
main()
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- /* STM32U0xx HAL library initialization:
- - Configure the Flash prefetch
- - Systick timer is configured by default as source of time base, but user
- can eventually implement his proper time base source (a general purpose
- timer for example or other time source), keeping in mind that Time base
- duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
- handled in milliseconds basis.
- - Low Level Initialization
- */
- /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- /* USER CODE BEGIN 2 */
- /* -1- Enable GPIO Clock (to be able to program the configuration registers) */
- LED4_GPIO_CLK_ENABLE();
- /* -2- Configure IO in output push-pull mode to drive external LEDs */
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
- GPIO_InitStruct.Pin = LED4_PIN;
- HAL_GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStruct);
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- HAL_GPIO_TogglePin(LED4_GPIO_PORT, LED4_PIN);
- /* Insert delay 100 ms */
- HAL_Delay(1000);
- }
- /* USER CODE END 3 */
- }
|