stm32开发之rt-thread使SysTick处于微妙级运行时,出现的问题记录
前言
- 在使用rt-thread开发时,想将调度的时间间隔缩短到微妙级别。根据提示需要修改对应的宏定义即可。这里在修改宏定义时,发现进入中断太过频繁,以至于主逻辑一直无法执行。这里测试的环境如下:
相关环境介绍
- 开发工具使用的是CLION
- 测试开发板使用的是普中stm32F407zgt6
- rt-thread的版本选用的是5.0.2版本
修改RT_TICK_PER_SECOND的值(默认为1000)
- 这里修改为10000,对应的频率为100us触发一次Systick_Handler中断处理函数
测试结果
- 在普中这个开发板上100us定时中断处理函数,暂时正常。然后上升到10us的时候,就会出现问题
处理方式
- 修改官方提供的驱动函数
最终测试(仅针对于上述所说的开发板)
- 最高大致可以达到4us的情况,
2. 测试程序(使用的是软件定时器)
/*
* Copyright (c) 2024-2024,shchl
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 24-9-1 shchl first version
*/
#include "main.h"
static struct rt_timer timer;
static void timer_out_cb(void *parameter) {
bsp_gpio_toggle(LED0);
}
int soft_timer_init() {
rt_timer_init(&timer, "timer_s",
timer_out_cb, NULL,
50*(RT_TICK_PER_SECOND/1000),
RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER
);
rt_timer_start(&timer);
return 0;
}
INIT_APP_EXPORT(soft_timer_init);