我用运行80MHZ的 STM32L412 的TIM1 跑定时10us中断。使用CC1捕获中断。
测试结果中断函数一共使用了46个机器周期。说明80MHZ时钟下,中断仅占用46/800 的MCU资源。
由此推算,MCU 跑32MHZ 时,占用率会上升到 46/320,小于15%的占有率。
但依然富裕。
中断函数:/**
* @brief This function handles TIM1 capture compare interrupt.
*/
void TIM1_CC_IRQHandler(void)
{
volatile static uint32_t s=0;
/* USER CODE BEGIN TIM1_CC_IRQn 0 */
TIM1->SR =0;;
s = TIM1->CNT;
if(gDelay10us)
{
gDelay10us--;
}
asm("nop");
/* USER CODE END TIM1_CC_IRQn 0 */
//HAL_TIM_IRQHandler(&htim1);
/* USER CODE BEGIN TIM1_CC_IRQn 1 */
/* USER CODE END TIM1_CC_IRQn 1 */
}
主函数计算运行周期,CC1 捕获设置100;
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
__WFI();
cnt =TIM1->CNT-100;
if (0 == gDelay10us)
{
gDelay10us =123;
}
}
;;;;;;;;;;;;;;;;;;;;;;
|