想给STM32工搞一个已经开机时长,和执行一段函数所需要的时间,用一个定时器去计时又浪费。在其他平台有类似的函数可以实现,STM32也搞一个。找了一圈没发现前人的脚步(有人做出来了没公开发表而已),倒是发现一个标题党。最终在crazepony飞控代码中发现了蛛丝马迹。我要开始栽树了。
下面开始移植
平台 :stm32f407
函数库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
IDE:IAR
先在stm32f4xx_it.c中添加要用的变量
// cycles per microsecond
static volatile uint32_t usTicks = 0;
// current uptime for 1kHz systick timer. will rollover after 49 days. hopefully we won't care.
volatile uint32_t sysTickUptime = 0;
在stm32f4xx_it.c中添加下面函数,利用嘀嗒定时器中断计数实现
void SysTick_Handler(void)
{
sysTickUptime++;
}
///循环计数器初始化
void cycleCounterInit(void)
{
RCC_ClocksTypeDef clocks;
RCC_GetClocksFreq(&clocks);
usTicks = clocks.SYSCLK_Frequency / 1000000;
SysTick_Config(clocks.HCLK_Frequency / 1000); //SysTick开启系统tick定时器并初始化其中断,1ms
}
// Return system uptime in microseconds (rollover in