本文主要是介绍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);
这篇关于stm32开发之rt-thread使SysTick处于微妙级运行时,出现的问题记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!