微秒(us)延时 程序

2023-05-16

微秒级的延时最好用systick 1 来计算。使用方法3(wait_loop_index–)时间变动会比较大。

函数10us100us500us900us
us_delay111.2101.2501.3901.2
us_delay321933483

测试函数,测试函数是根据SysTick来计算的。

void us_test(char argc,char **argv)
{
	int i,type,us,start,end,delta;
	
	type = atoi(argv[2]);
	us = atoi(argv[1]);
	
	for(i=0;i<10;i++)
    {    
		start = SysTick->VAL;
		switch (type)
		{
			case 1:
				us_delay1(us);
				break;
			case 2:
				us_delay2(us);
				break;
			case 3:
				us_delay3(us);
				break;
			default:
				break;
		}
		end = SysTick->VAL;
		delta = start > end ? start - end : 79999 + start - end;
		printf("%5d us. start:%5d, now:%5d, delta:%5d \n",us,start,end,delta);
	}
}
MSH_CMD_EXPORT(us_test,xxx);
//======================delay======================
// ref: rt_hw_us_delay() at drv_common.c(rt-thread 4.01)
//note:us_tick= 80, reload = 79,999. if us>999,(delta < us_tick * us) can't happend.
void us_delay1(uint32_t us)
{
    rt_uint32_t start, now, delta, reload, us_tick;
    //这个if另加的,原来一旦超过999就会死循环
	if(us>999)
	{
		printf("arg error:us>999");
		return;
	}
    start = SysTick->VAL;
    reload = SysTick->LOAD;
    us_tick = SystemCoreClock / 1000000UL;	//80
	
    do {
        now = SysTick->VAL;
        delta = start > now ? start - now : reload + start - now;
    } while(delta < us_tick * us);
	
}

//ref:https://www.rt-thread.org/document/site/programming-manual/timer/timer/#_14 里的高精度延时
void us_delay2(uint32_t us)
{
    rt_uint32_t start;
    /* 获得延时经过的 tick 数 */
    us = us * (SysTick->LOAD/(1000000/RT_TICK_PER_SECOND));//us*80,000
    /* 获得当前时间 */
    start = SysTick->VAL;
    /* 循环获得当前时间,直到达到指定的时间后退出循环 */
    while (start - SysTick->VAL< us);
}

//ref:stm32l4xx_hal_pwr_ex.c里用于延时的语句,做了*2的调整
void us_delay3(uint32_t us)
{
	uint32_t wait_loop_index;
	wait_loop_index = us*SystemCoreClock/(1000000*2);
	
	while(wait_loop_index != 0)
	{
		wait_loop_index--;
	}
}

100us测试结果

函数最大偏差(基本<10%)总结问题出处-作者
us_delay110us非常稳定超过1,000us会进入死循环rt_hw_us_delay() at drv_common.c
us_delay27,000us有bug,有时会跳没有判断systick reload的情况rt-thread 官网 高精度延时例程
us_delay3400us稳定有点笨stm32l4xx_hal_pwr_ex.c 关于wait_loop_index的延时语句

方法1作者@SummerGift 感谢在2018-11-7做的更新,最好对参数做个限制,不然会进入死循环。
方法2作者@RT-Thread 官网 高精度延时例程也是有bug的。

下面测试样本


us_delay1
100 us. start:57821, now:49725, delta: 8096
100 us. start:22203, now:14107, delta: 8096
100 us. start:66631, now:58535, delta: 8096
100 us. start:31098, now:23002, delta: 8096
100 us. start:75517, now:67421, delta: 8096
100 us. start:39983, now:31887, delta: 8096
100 us. start: 4157, now:76061, delta: 8095
100 us. start:48620, now:40524, delta: 8096
100 us. start:13095, now: 4999, delta: 8096
100 us. start:56741, now:48645, delta: 8096
100 us. start:21216, now:13120, delta: 8096
100 us. start:65643, now:57547, delta: 8096
100 us. start:30017, now:21921, delta: 8096
100 us. start:74217, now:66121, delta: 8096
100 us. start:38683, now:30587, delta: 8096
100 us. start: 3087, now:74990, delta: 8096
100 us. start:47550, now:39454, delta: 8096
100 us. start:10383, now: 2287, delta: 8096
100 us. start:54037, now:45941, delta: 8096
100 us. start:18206, now:10110, delta: 8096
100 us. start:62263, now:54167, delta: 8096
100 us. start:26737, now:18641, delta: 8096
100 us. start:70687, now:62591, delta: 8096
100 us. start:34426, now:26330, delta: 8096
100 us. start:78843, now:70747, delta: 8096
100 us. start:43199, now:35103, delta: 8096
100 us. start: 7674, now:79207, delta: 8466
100 us. start:51761, now:43665, delta: 8096
100 us. start:16035, now: 7939, delta: 8096
100 us. start:59750, now:51654, delta: 8096
100 us. start:24217, now:16121, delta: 8096
100 us. start:68636, now:60540, delta: 8096
100 us. start:33102, now:25006, delta: 8096
100 us. start:77183, now:69087, delta: 8096
100 us. start:41649, now:33553, delta: 8096
100 us. start: 6124, now:78019, delta: 8104
100 us. start:50570, now:42474, delta: 8096
100 us. start:15045, now: 6949, delta: 8096
100 us. start:59010, now:50914, delta: 8096
100 us. start:23477, now:15381, delta: 8096
100 us. start:67855, now:59759, delta: 8096
100 us. start:32182, now:24086, delta: 8096
100 us. start:76603, now:68507, delta: 8096
100 us. start:41069, now:32973, delta: 8096
100 us. start: 5544, now:77437, delta: 8106
100 us. start:49990, now:41894, delta: 8096
100 us. start:14465, now: 6369, delta: 8096
100 us. start:58482, now:50386, delta: 8096
100 us. start:22956, now:14860, delta: 8096
100 us. start:67216, now:59120, delta: 8096
100 us. start:31682, now:23586, delta: 8096
100 us. start:76103, now:68007, delta: 8096
100 us. start:40569, now:32473, delta: 8096
100 us. start: 5038, now:76934, delta: 8103
100 us. start:49485, now:41389, delta: 8096
100 us. start:13960, now: 5864, delta: 8096
100 us. start:57960, now:49864, delta: 8096
100 us. start:22226, now:14130, delta: 8096
100 us. start:66646, now:58550, delta: 8096
100 us. start:31112, now:23016, delta: 8096
100 us. start:75533, now:67437, delta: 8096
100 us. start:39999, now:31903, delta: 8096
100 us. start: 3429, now:75322, delta: 8106
100 us. start:47882, now:39786, delta: 8096
100 us. start:12139, now: 4043, delta: 8096
100 us. start:56130, now:48034, delta: 8096
100 us. start:20596, now:12500, delta: 8096
100 us. start:64956, now:56860, delta: 8096
100 us. start:29212, now:21116, delta: 8096
100 us. start:73632, now:65536, delta: 8096
100 us. start:38099, now:30003, delta: 8096
100 us. start: 2568, now:74464, delta: 8103
100 us. start:47024, now:38928, delta: 8096
100 us. start:11219, now: 3123, delta: 8096
100 us. start:55190, now:47094, delta: 8096
100 us. start:19656, now:11560, delta: 8096
100 us. start:63688, now:55592, delta: 8096
100 us. start:28154, now:20058, delta: 8096
100 us. start:72583, now:64487, delta: 8096
100 us. start:37008, now:28912, delta: 8096
100 us. start: 1265, now:73159, delta: 8105
100 us. start:45714, now:37618, delta: 8096
100 us. start:10189, now: 2093, delta: 8096
100 us. start:54069, now:45973, delta: 8096
100 us. start:18206, now:10110, delta: 8096
100 us. start:61534, now:53438, delta: 8096
100 us. start:26001, now:17905, delta: 8096
100 us. start:70182, now:62086, delta: 8096
100 us. start:34648, now:26552, delta: 8096
100 us. start:78468, now:70372, delta: 8096
100 us. start:42934, now:34838, delta: 8096
100 us. start: 7409, now:79312, delta: 8096
100 us. start:51819, now:43723, delta: 8096
100 us. start:16065, now: 7969, delta: 8096
100 us. start:60036, now:51940, delta: 8096
100 us. start:24511, now:16415, delta: 8096
100 us. start:68932, now:60836, delta: 8096
100 us. start:33398, now:25302, delta: 8096
100 us. start:77829, now:69733, delta: 8096
100 us. start:42304, now:34208, delta: 8096


msh />us_test 100 2
100 us. start:75119, now:67148, delta: 7971
100 us. start:39571, now:31600, delta: 7971
100 us. start: 4122, now:79615, delta: 4506
100 us. start:52181, now:44210, delta: 7971
100 us. start:16719, now: 8748, delta: 7971
100 us. start:60982, now:53011, delta: 7971
100 us. start:25237, now:17266, delta: 7971
100 us. start:69796, now:61825, delta: 7971
100 us. start:34400, now:26429, delta: 7971
100 us. start:78923, now:70952, delta: 7971
100 us. start:43519, now:35548, delta: 7971
100 us. start: 8073, now: 102, delta: 7971
100 us. start:52365, now:44394, delta: 7971
100 us. start:16899, now: 8928, delta: 7971
100 us. start:61072, now:53101, delta: 7971
100 us. start:25667, now:17696, delta: 7971
100 us. start:69836, now:61865, delta: 7971
100 us. start:34440, now:26469, delta: 7971
100 us. start:78923, now:70952, delta: 7971
100 us. start:43519, now:35548, delta: 7971
100 us. start: 8073, now: 102, delta: 7971
100 us. start:52365, now:44394, delta: 7971
100 us. start:16899, now: 8928, delta: 7971
100 us. start:55477, now:47506, delta: 7971
100 us. start:20081, now:12110, delta: 7971
100 us. start:64636, now:56665, delta: 7971
100 us. start:29212, now:21241, delta: 7971
100 us. start:73771, now:65800, delta: 7971
100 us. start:38369, now:30398, delta: 7971
100 us. start: 2935, now:79611, delta: 3323
100 us. start:52175, now:44204, delta: 7971
100 us. start:16709, now: 8738, delta: 7971
100 us. start:60976, now:53005, delta: 7971
100 us. start:25221, now:17250, delta: 7971
100 us. start:69779, now:61808, delta: 7971
100 us. start:34383, now:26412, delta: 7971
100 us. start:78925, now:70954, delta: 7971
100 us. start:43529, now:35558, delta: 7971
100 us. start: 8083, now: 112, delta: 7971
100 us. start:52381, now:44410, delta: 7971
100 us. start:16919, now: 8948, delta: 7971
100 us. start:61082, now:53111, delta: 7971
100 us. start:25677, now:17706, delta: 7971
100 us. start:69836, now:61865, delta: 7971
100 us. start:34440, now:26469, delta: 7971
100 us. start:78923, now:70952, delta: 7971
100 us. start:40563, now:32592, delta: 7971
100 us. start: 4673, now:79613, delta: 5059
100 us. start:52185, now:44214, delta: 7971
100 us. start:16719, now: 8748, delta: 7971
100 us. start:60982, now:53011, delta: 7971
100 us. start:25237, now:17266, delta: 7971
100 us. start:64161, now:56190, delta: 7971
100 us. start:28757, now:20786, delta: 7971
100 us. start:73321, now:65350, delta: 7971
100 us. start:37919, now:29948, delta: 7971
100 us. start: 2485, now:79617, delta: 2867
100 us. start:52181, now:44210, delta: 7971
100 us. start:16719, now: 8748, delta: 7971
100 us. start:60982, now:53011, delta: 7971
100 us. start:25237, now:17266, delta: 7971
100 us. start:69796, now:61825, delta: 7971
100 us. start:34400, now:26429, delta: 7971
100 us. start:78923, now:70952, delta: 7971
100 us. start:43519, now:35548, delta: 7971
100 us. start: 8073, now: 102, delta: 7971
100 us. start:52365, now:44394, delta: 7971
100 us. start:16899, now: 8928, delta: 7971
100 us. start:55477, now:47506, delta: 7971
100 us. start:20081, now:12110, delta: 7971
100 us. start:64636, now:56665, delta: 7971
100 us. start:29212, now:21241, delta: 7971
100 us. start:73771, now:65800, delta: 7971
100 us. start:38369, now:30398, delta: 7971
100 us. start: 2935, now:79611, delta: 3323
100 us. start:52175, now:44204, delta: 7971
100 us. start:16709, now: 8738, delta: 7971
100 us. start:60976, now:53005, delta: 7971
100 us. start:25221, now:17250, delta: 7971
100 us. start:69779, now:61808, delta: 7971
100 us. start:34383, now:26412, delta: 7971
100 us. start:78925, now:70954, delta: 7971
100 us. start:43529, now:35558, delta: 7971
100 us. start: 8083, now: 112, delta: 7971
100 us. start:52381, now:44410, delta: 7971
100 us. start:16919, now: 8948, delta: 7971
100 us. start:61082, now:53111, delta: 7971
100 us. start:25677, now:17706, delta: 7971
100 us. start:69836, now:61865, delta: 7971
100 us. start:34440, now:26469, delta: 7971
100 us. start:78923, now:70952, delta: 7971
100 us. start:40603, now:32632, delta: 7971
100 us. start: 4673, now:79613, delta: 5059
100 us. start:52185, now:44214, delta: 7971
100 us. start:16719, now: 8748, delta: 7971
100 us. start:60982, now:53011, delta: 7971
100 us. start:25237, now:17266, delta: 7971
100 us. start:69796, now:61825, delta: 7971
100 us. start:34400, now:26429, delta: 7971
100 us. start:78923, now:70952, delta: 7971


msh />us_test 100 3
100 us. start:65215, now:57729, delta: 7486
100 us. start:30012, now:22521, delta: 7491
100 us. start:75009, now:67518, delta: 7491
100 us. start:40093, now:32602, delta: 7491
100 us. start: 5089, now:77237, delta: 7851
100 us. start:49800, now:42309, delta: 7491
100 us. start:14875, now: 7384, delta: 7491
100 us. start:59132, now:51641, delta: 7491
100 us. start:24217, now:16726, delta: 7491
100 us. start:69271, now:61780, delta: 7491
100 us. start:34348, now:26857, delta: 7491
100 us. start:79051, now:71560, delta: 7491
100 us. start:43996, now:36505, delta: 7491
100 us. start: 8540, now: 1049, delta: 7491
100 us. start:53155, now:45664, delta: 7491
100 us. start:18200, now:10709, delta: 7491
100 us. start:62567, now:55076, delta: 7491
100 us. start:27642, now:20151, delta: 7491
100 us. start:72681, now:65190, delta: 7491
100 us. start:37759, now:30268, delta: 7491
100 us. start:78609, now:71118, delta: 7491
100 us. start:43684, now:36193, delta: 7491
100 us. start: 8538, now: 1047, delta: 7491
100 us. start:53155, now:45664, delta: 7491
100 us. start:18200, now:10709, delta: 7491
100 us. start:62567, now:55076, delta: 7491
100 us. start:27642, now:20151, delta: 7491
100 us. start:72681, now:65190, delta: 7491
100 us. start:60663, now:53172, delta: 7491
100 us. start:25638, now:18147, delta: 7491
100 us. start:70725, now:63234, delta: 7491
100 us. start:35731, now:28240, delta: 7491
100 us. start: 808, now:72957, delta: 7850
100 us. start:45560, now:38069, delta: 7491
100 us. start:10583, now: 3092, delta: 7491
100 us. start:55216, now:47725, delta: 7491
100 us. start:20260, now:12769, delta: 7491
100 us. start:65342, now:57851, delta: 7491
100 us. start:30377, now:22886, delta: 7491
100 us. start:75453, now:67962, delta: 7491
100 us. start:40462, now:32971, delta: 7491
100 us. start: 5546, now:77694, delta: 7851
100 us. start:44542, now:37051, delta: 7491
100 us. start: 9573, now: 2082, delta: 7491
100 us. start:54087, now:46596, delta: 7491
100 us. start:19092, now:11601, delta: 7491
100 us. start:64182, now:56691, delta: 7491
100 us. start:29176, now:21685, delta: 7491
100 us. start:68569, now:61078, delta: 7491
100 us. start:33592, now:26101, delta: 7491
100 us. start:78675, now:71184, delta: 7491
100 us. start:43759, now:36268, delta: 7491
100 us. start: 8783, now: 1292, delta: 7491
100 us. start:53165, now:45674, delta: 7491
100 us. start:18160, now:10669, delta: 7491
100 us. start:62897, now:55406, delta: 7491
100 us. start:27926, now:20435, delta: 7491
100 us. start:73003, now:65512, delta: 7491
100 us. start:38012, now:30521, delta: 7491
100 us. start: 3098, now:75246, delta: 7851
100 us. start:47810, now:40319, delta: 7491
100 us. start:12834, now: 5343, delta: 7491
100 us. start:57451, now:49960, delta: 7491
100 us. start:22480, now:14989, delta: 7491
100 us. start:66376, now:58885, delta: 7491
100 us. start:31406, now:23915, delta: 7491
100 us. start:76499, now:69008, delta: 7491
100 us. start:41513, now:34022, delta: 7491
100 us. start: 6589, now:78737, delta: 7851
100 us. start:51301, now:43810, delta: 7491
100 us. start:16324, now: 8833, delta: 7491
100 us. start:61066, now:53575, delta: 7491
100 us. start:26071, now:18580, delta: 7491
100 us. start:71157, now:63666, delta: 7491
100 us. start:36157, now:28666, delta: 7491
100 us. start: 1243, now:73391, delta: 7851
100 us. start:45893, now:38402, delta: 7491
100 us. start:10969, now: 3478, delta: 7491
100 us. start:55716, now:48225, delta: 7491
100 us. start:20755, now:13264, delta: 7491
100 us. start:65832, now:58341, delta: 7491
100 us. start:30862, now:23371, delta: 7491
100 us. start:75939, now:68448, delta: 7491
100 us. start:40968, now:33477, delta: 7491
100 us. start: 6044, now:78193, delta: 7850
100 us. start:50484, now:42993, delta: 7491
100 us. start:15560, now: 8069, delta: 7491
100 us. start:58572, now:51081, delta: 7491
10


之前收集的,可以不看。
下面的例程都是摘自rt-thread中,可以参考着写。
1 是根据tick,

static void retry_delay_100us(void) {
    /* 100 microsecond delay */
    rt_thread_delay((RT_TICK_PER_SECOND * 1 + 9999) / 10000);
}

rt_err_t rt_thread_delay(rt_tick_t tick)
{
    return rt_thread_sleep(tick);
}
rt_err_t rt_thread_sleep(rt_tick_t tick)
{
    register rt_base_t temp;
    struct rt_thread *thread;

    /* set to current thread */
    thread = rt_thread_self();
    RT_ASSERT(thread != RT_NULL);
    RT_ASSERT(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread);

    /* disable interrupt */
    temp = rt_hw_interrupt_disable();

    /* suspend thread */
    rt_thread_suspend(thread);

    /* reset the timeout of thread timer and start it */
    rt_timer_control(&(thread->thread_timer), RT_TIMER_CTRL_SET_TIME, &tick);
    rt_timer_start(&(thread->thread_timer));

    /* enable interrupt */
    rt_hw_interrupt_enable(temp);

    rt_schedule();

    /* clear error number of this thread to RT_EOK */
    if (thread->error == -RT_ETIMEOUT)
        thread->error = RT_EOK;

    return RT_EOK;
}

2 根据系统时钟SystemcoreClock,执行n调指令

wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
 {
   wait_loop_index--;
 }

3 drv_common.c

void rt_hw_us_delay(rt_uint32_t us)
{
    rt_uint32_t start, now, delta, reload, us_tick;
    start = SysTick->VAL;
    reload = SysTick->LOAD;
    us_tick = SystemCoreClock / 1000000UL;
    do {
        now = SysTick->VAL;
        delta = start > now ? start - now : reload + start - now;
    } while(delta < us_tick * us);
}

  1. systick的数值是载入reload(80,000)后,硬件每SystemCoreClock(or 1/8)自动递减(每次-1相当于走过一个硬件时钟)。减到0进入systick的中断。这个中断可以做为系统时钟OS Tick。
    /* Configure the Systick interrupt time /
    HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / RT_TICK_PER_SECOND);
    /
    Configure the Systick */
    HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
    STM32CubeMX 时钟设置 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微秒(us)延时 程序 的相关文章

  • C++学习总结(二十七)——STL容器与算法(一) STL容器的组成,线性容器(array,vector,tuple,queue,deque,stack),链式容器(list)

    STL容器 xff1a C 43 43 标准库的一部分 xff0c 用C 43 43 Template机制表达泛型的库 xff0c 用泛型技术设计完成实例 Template特性 1 类模板偏特化 xff0c 进行严格的类型检查 2 默认模板
  • C++学习总结(二十八)——STL容器与算法(二) 集合set multiset bitset 映射 map 以及散列hash的介绍

    1 集合set的基本操作 集合中不能包含重复的元素 xff0c 如果包含重复的元素 xff0c 则将被自动剔除 同时实现自动排序 红黑树容器 xff1a 例如数据 xff1a 1 2 3 4 5 6 7 经过排序后的结果为 xff1a 4
  • Linux Ubuntu基本操作指令

    Linux的登录方式 xff1a 1 本地登录 2 远程登录 xff1a putty使用 查看运行级别 xff1a Linux运行级别0 6级 xff0c 0 关机 6 重启 1 单用户 2 3 多用户 可以通过runlevel 查看运行级
  • 微信小程序开发(一)

    微信小程序开发 目录 微信小程序开发 一 微信小程序开发 二 五 让小程序连接树莓派 六 xff1a 小程序控制面板设计 七 xff1a 树莓派如何解析小程序的信息 八 xff1a 树莓派如何回信息给小程序 九 xff1a 树莓派与微信小程
  • ssh远程失败,提示“REMOTE HOST IDENTIFICATION HAS CHANGED! ”解决办法

    搞了个谷歌云 xff0c 但是因为一些原因一直提示我在挖矿 xff0c 一脸懵逼 xff0c 估计是别人的脚本做了手脚 删了新建一个实例 xff0c 外部IP还是原来的 xff0c 使用ssh远程连接的时候发现提示 REMOTE HOST
  • 【滤波器学习笔记】一阶RC低通滤波

    一阶RC低通滤波 从模拟到数字 本文整理自网络 匠人手记 等书籍文章 模拟电路低通滤波时域 频域软件低通滤波 典型电路 图1 典型RC电路 直流 交流 脉冲信号都可以用它 时域 电容电流 xff1a I c 61 d q d t 61 d
  • 嵌入式:一种裸机编程多任务切换方法

    嵌入式 xff1a 一种裸机编程多任务切换方法 有时候为了实现一些简单的 对实时性要求不高的任务 xff0c 采用操作系统不仅增加了程序的复杂性 xff0c 对低性能单片机的资源占用也是值得考虑的问题 这时候操作系统可能不是必要的 xff0
  • 自动化学科领域高质量科技期刊T1级期刊

    自动化学科领域高质量科技期刊T1级期刊 控制理论与控制工程方向 序号 期刊名称 T1 01 IEEE Transactions on Automatic Control T1 02 Automatica T1 03 SIAM Journal
  • UR机器人手眼标定

    一 UR机器人位姿表示 默认情况下UR机器人的基坐标系和TCP如下图所示 xff1a 注意这里的TCP位置和坐标系都是在默认TCP配置的情况下 xff0c 默认的TCP配置如下图所示 xff1a 如果用户想要自己设置TCP的位置和坐标系就可
  • 《自抗扰控制技术》——第一遍阅读

    目录 感想摘抄自认为有用的结论第一章 xff1a 剖析经典PID调节器第二章 xff1a 跟踪微分器第三章 xff1a 非光滑反馈的功能和效率第四章 xff1a 扩张状态观测器第五章 xff1a 自抗扰控制器第六章 xff1a 自抗扰控制器
  • ROS Melodic版本下Gazebo的更新与安装

    ROS Melodic自带的Gazebo版本过低 xff0c 建议升级 span class token comment 1 首先 xff0c 查看Gazebo版本 出现的是 gazebo9 及其相关插件 span dpkg l span
  • 《自抗扰控制技术》——第二遍(仿真)

    目录 感想复现书上的仿真图像第一章 xff1a 剖析经典PID调节器第二章 xff1a 跟踪微分器第三章 xff1a 非光滑反馈的功能和效率第四章 xff1a 扩张状态观测器第五章 xff1a 自抗扰控制器第六章 xff1a 自抗扰控制器的
  • 使用MYNT-EYE-D相机跑开源代码VINS_Fusion

    使用MYNT EYE D相机跑开源代码VINS Fusion 这两天刚买了一个小觅智能公司型号为D1000 IR 120 Color的深度相机 xff0c 探索了一下在VINS Fusions上的融合方法 xff0c 折腾了很久才成功 xf
  • 修改docker默认存储路径

    默认情况下 xff0c docker镜像的默认存储路径是 var lib docker xff0c 这相当于直接挂载系统目录下 xff0c 而一般在搭系统时 xff0c 这个区都不会太大 xff0c 所以如果长期使用docker开发应用 x
  • 制作自己的rgb-d数据集

    今天自己用机器人采了一波数据 尝试着用自己采集的RGB D数据来跑slam2的RGB D例程 下面来记录一下 该文章主要是参考这篇博客 xff1a https blog csdn net qq 16481211 article detail
  • ROS中的一些基本概念

    主节点 xff08 master xff09 xff1a 负责节点到节点的消息与通信 用roscore命令来运行主节点 节点只有在需要注册自己信息或向其他节点发送请求时才能访问主节点 节点 xff08 node xff09 xff1a 是指
  • ros实践(一):编写一个自己的功能包

    创建ROS功能包的命令如下 xff1a catkin create pkg 功能包名称 依赖功能包1 依赖功能包2 实践 cd catkin ws src catkin create pkg my first ros pkg std msg
  • 多传感器融合技术(一)

    传感器融合 xff0c 一般可以分为四种 xff1a Early fusion Fusing the raw data xff0c 一般称为前融合 xff08 或数据融合 xff09 xff0c 汇总所有传感器的数据 xff0c 得到一个s
  • 多传感器融合技术(序)

    一 xff0e 概述 多传感器融合 xff08 Multi sensor Fusion MSF xff09 是利用计算机技术 xff0c 将来自多传感器或多源的信息和数据以一定的准则进行自动分析和综合 xff0c 以完成所需的决策和估计而进
  • 如何使用手机端、ipad端来编写博客

    今天收到一位粉丝的提问 xff0c 为此我特意去试了一下 xff0c 相信大家都知道CSDN的移动APP是不能写博客的 xff0c 那么我就想到用网页去试试 xff0c 但是当我搜索CSDN网页进去以后 xff0c 如图 xff1a 解法是

随机推荐

  • 上位机串口数据检验方式(二)——奇偶校验

    奇偶校验这个概念在逻辑设计里面经常会用到 xff0c 但有的人对奇偶校验的理解很混乱 奇偶校验是对数据传输正确性的一种校验方法 在数据传输前附加一位奇校验位 xff0c 用来表示传输的数据中 34 1 34 的个数是奇数还是偶数 xff0c
  • coco2017 数据集获取

    span class token comment 下载命令 span span class token function wget span http images cocodataset org zips train2017 zip sp
  • c++/opencv利用相机位姿估计实现2D图像像素坐标到3D世界坐标的转换

    最近在做自动泊车项目中的车位线检测 xff0c 用到了将图像像素坐标转换为真实世界坐标的过程 xff0c 该过程可以通过世界坐标到图像像素坐标之间的关系进行求解 xff0c 在我的一篇博文中已经详细讲解了它们之间的数学关系 xff0c 不清
  • C语言回调函数的定义和写法

    C语言中的回调函数 xff08 Callback Function xff09 1 定义和使用场合 回调函数是指 使用者自己定义一个函数 xff0c 实现这个函数的程序内容 xff0c 然后把这个函数 xff08 入口地址 xff09 作为
  • MATLAB到底有多厉害

    前言 有人说 xff0c MATLAB除了不会生孩子 xff0c 什么都会 矩阵运算 数据可视化 GUI xff08 用户界面 xff09 设计 甚至是连接其他编程语言 xff0c MATLAB都能轻松实现 xff01 那么 xff0c M
  • 无人机的偏航角,滚动角,俯仰角解释

    1 偏航角 xff08 yaw xff09 简单的定义 xff1a 就是实际航向与计划航向之间的夹角 xff0c 如图所示 深刻的定义 xff1a 机轴 xff08 沿机头方向 xff09 水平投影与地轴的夹角 xff0c 如图所示 或者
  • STM32H743,基于LL库实现adc采样(ADC+DMA+TIM)

    买了一块正点原子的阿波罗H743开发板 xff0c 最近在调试ADC采样 xff0c 由于CubeMx生成的是HAL库格式的代码 xff0c HAL库使用时太占用资源了不喜欢 xff0c 个人比较喜欢LL库 xff0c 这个库和STD库有点
  • 芯片热阻的理解

    基本概念 xff1a Ta xff1a Temperature Ambient 环境温度 Tc xff1a Temperature Case外壳温度 Tj xff1a Temperature Junction节点温度 热阻Rja xff1a
  • HDC1080传感器使用

    HDC1080温湿度传感器的驱动链接 xff08 函数都封装好了 xff0c 稍微改改就能用了 xff09 xff1a https download csdn net download qq 27718231 12656947 没有积分的小
  • 日常所用的耳机接口定义

    耳机插座在我们日常生活中是比较常见的一种电子元件 xff0c 其耳机插座的类型规格也区分有四段式耳机插座 三段式耳机插座等 三段式和四段式耳机的引脚定义如下 xff1a 四段式耳机插座接线的方法 xff0c 其只是比一般三段式的耳机插座增加
  • SX1268 SX1262中文数据手册

    在使用SX1268的时候 xff0c 只有英文数据手册 xff0c 中文手册没有人翻译 xff0c 现提供SX1262的中文手册方便大家在开发SX1268程序时使用 xff0c 这两款芯片使用上几乎一样的 xff0c 只是SX1268支持中
  • 用IO口模拟串口(外部中断+定时器)--附程序附测试结果

    给大家分享一下我用IO口模拟串口的一种方法 xff0c 经测试使用这种方法发送能支持115200波特率 xff0c 接收9600波特率测试没问题 xff0c 接收波特率能否提高受制于用户应用场景是否能允许微妙级别的频繁中断了 xff0c 我
  • gazebo和moveit联合机械臂运动规划仿真(包含realsense视觉点云)

    1 gazebo仿真环境搭建 最终的场景 xff1a 使用的机械臂 xff1a AR3工业六轴机械臂 系统环境 xff1a ubuntu18 43 ros melodic 注 xff1a 机械臂description包在github上下载的
  • 串口接收中断+空闲中断实现多个数据帧接收与处理

    在一些应用场合中 xff0c 要求串口接收的数据不能丢同时又方便帧解析 xff0c 我之前的做法是定义一个二维数组data n m m的大小要大于最大帧长度 xff0c n用来指定帧缓存个数 xff0c 每次接收到一帧数据二维数组下标n加1
  • 使用STM32L4系列SPI字节收发异常原因查找

    使用STM32F1 F4 xff0c L1等系列MCU的SPI时 xff0c 不用hal库自带的收发函数时我们会用下面这种收发函数 xff1a 收发一个字节 uint8 t SPI Rw Byte uint8 t data while HA
  • Qt学习总结之QMessageBox

    QMessageBox主要用来通知用户或者请求用户提问和接收应答一个模态对话框 一 对话框的构成 图标是有标准图标的 xff0c 可以直接调用 我们声明的消息框 xff0c 初始状态都是模态的 阻塞程序 xff0c 这里就不演示了 xff0
  • 嵌入式MCU工程师毕业1年,接下来要学的东西有:

    刚毕业 nbsp 1 nbsp 年多了 接下来感觉有好多东西要学习 一 单片机方面的 比如 COSii和 COSiii 还有FreeRTOS等微型操作系统 除了操作系统之外 还要学习诸如emwin界面设计 还想搞一下Wifi 以太网 蓝牙B
  • RT-THREAD 线程同步与通讯:信号量、互斥量、事件、邮箱、队列、信号

    线程同步包括 xff1a 信号量 互斥量 事件 线程通讯包括 xff1a 邮箱 队列 信号 rt thread源文件说明 xff1a ipc c xff1a 信号量 xff08 sem xff09 互斥信号 xff08 mutex xff0
  • easyflash 教程

    可以看easyflash下的docs文档 xff0c 万一你们手头没有文档呢 这里我就直接黏贴了 API 说明文档 xff1a docs zh api md 通用移植文档 xff1a docs zh port md EasyFlash AP
  • 微秒(us)延时 程序

    微秒级的延时最好用systick 1 来计算 使用方法3 xff08 wait loop index xff09 时间变动会比较大 函数10us100us500us900usus delay111 2101 2501 3901 2us de