1us专题

HI3556V200 Linux+Liteos双系统学习(6)----Liteos能否延时1us?

作为一个Liteos新手,了解了Liteos的大致流程以及原理后,便直接编译代码运行Liteos。在一个功能中,需要延时1us,看到Liteos内核源码中有usleep函数,便直接使用此函数,但是测试发现,这个延时1us效果不太对,远远大于1us,有点怪异… 起初以为是代码哪里有问题,仔细检查代码,没有发现有异常的地方。不得已,看下Liteos端的usleep是如何实现的。 在Liteos内核

FreeRTOS中实现延时1us,1ms

1us void Delay_us(int16_t nus) {UINT ticks;UINT told,tnow,reload,tcnt=0;if((0x0001&(SysTick->CTRL)) ==0) //定时器未工作vPortSetupTimerInterrupt(); //初始化定时器reload = SysTick->LOAD; /

stm32超声波测距不准的解决方法(STM32 delay_us()产生1us)

首先要说明一下原理:使用stm32无法准确产生1us的时间,但是超声波测距一定要依赖时间,时间不准,距离一定不准,这是要肯定的,但是在不准确的情况下,要测量一个比较准确的时间,那么只能够把误差控制在一定范围内,这就是基本思想。 经过实验,获得实验数据如下: 这是delay_us(50)时候获取的实验数据: 这是delay_us(100)时候获取的实验数据: 可以发现结论并不像我