当前位置: 首页 > news >正文

stm32开发之rt-thread使SysTick处于微妙级运行时,出现的问题记录

前言

  1. 在使用rt-thread开发时,想将调度的时间间隔缩短到微妙级别。根据提示需要修改对应的宏定义即可。这里在修改宏定义时,发现进入中断太过频繁,以至于主逻辑一直无法执行。这里测试的环境如下:

相关环境介绍

  1. 开发工具使用的是CLION
  2. 测试开发板使用的是普中stm32F407zgt6
  3. rt-thread的版本选用的是5.0.2版本

修改RT_TICK_PER_SECOND的值(默认为1000)

  1. 这里修改为10000,对应的频率为100us触发一次Systick_Handler中断处理函数
    在这里插入图片描述

测试结果

  1. 在普中这个开发板上100us定时中断处理函数,暂时正常。然后上升到10us的时候,就会出现问题

处理方式

  1. 修改官方提供的驱动函数

在这里插入图片描述
在这里插入图片描述

最终测试(仅针对于上述所说的开发板)

  1. 最高大致可以达到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);

http://www.mrgr.cn/news/17516.html

相关文章:

  • shell了解和问答机制
  • 学习周报-2024.8.31
  • 全国大学生数学建模竞赛系统使用手册
  • C语言程序设计
  • C语言典型例题58
  • ModuleNotFoundError: No module named ‘cv2‘,python
  • 图片转为PDF怎么弄?看这里,三款软件助你一键转换!
  • Python基础语法(17多线程线程锁单例模式)
  • LC开源电路的学习(一)
  • 【学习笔记】卫星通信NTN 3GPP标准化进展分析(四)- 3GPP Release18内容
  • 盘点java8 stream中隐藏的函数式接口
  • 机器学习周报(8.26-9.1)
  • 【小白教程(无伤速通)】Visual Studio中Libtorch安装与配置
  • UNIX及UNIX-like环境下的调试工具gdb使用方法
  • nanogpt怎么进行模型切片,以实现推理过程算力共享,切多头
  • 【RabbitMQ应用篇】常见应用问题
  • 强化学习与深度学习的结合
  • yolo8 目标检测、鉴黄
  • 前端与后端的身份认证
  • Android Codec2 CCodec (七)IConfigurable