您的位置 首页 知识

st语言函数 st语言里时间怎么计算 st语言函数调用

ST语言中,时刻计算是一项非常重要的功能,ST语言是一种广泛应用于嵌入式体系编程的高质量语言,它具有简洁、高效的特点,在ST语言中,时刻计算主要依赖于体系时钟和定时器来实现。

们来了解一下ST语言中的体系时钟,体系时钟是ST语言中时刻计算的基础,它通常由硬件时钟源提供,在ST语言中,我们可以通过下面内容方式获取体系时钟:

nclude "stm32f10x.h"void SystemClock_Config(void) RCC_OscInitTypeDef RCC_OscInitStruct = 0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = 0}; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) Error_Handler(); }}

们来看看ST语言中的定时器,定时器是ST语言中实现时刻计算的关键,它可以根据需要设置定时周期,并在定时周期到达时触发中断或输出信号,下面内容一个使用定时器的示例:

nclude "stm32f10x.h"void TIM2_IRQHandler(void) if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // 定时器中断处理函数 }}void TIM2_Config(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure = 0}; TIM_TimeBaseStructure.TIM_Period = 1000 – 1; // 定时周期为1000ms TIM_TimeBaseStructure.TIM_Prescaler = 72 – 1; // 预分频器为72 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_COUNTERMODE_UP; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2, ENABLE);}

ST语言中,我们可以通过下面内容方式获取当前时刻:

nclude "stm32f10x.h"uint32_t GetSysTick(void) return SysTick->VAL;}uint32_t GetTime(void) return GetSysTick() / (SystemCoreClock / 1000);}

么样经过上面的分析代码,我们可以获取到从体系启动到当前时刻的毫秒数,这样,我们就可以在ST语言中实现时刻计算了,希望这篇文章能帮助无论兄弟们更好地了解ST语言中的时刻计算技巧。