用户登录
用户注册

分享至

stm32软件延时函数 stm32延时函数的几种方法

  • 作者: 银屑病牛皮癣健康咨询
  • 来源: 51数据库
  • 2020-04-16

两种吧 一种使用systemtick 或者直接等待

/*****************************************************************

* @brief

* @param

* @retval

*******************************************************************/

void TimeDelay(__IO uint32_t nCount)

{

while(nCount--) {

}

}

/**

* @brief Inserts a delay time.

* @param nTime: specifies the delay time length, in milliseconds.

* @retval None

*/

void Delayms(__IO uint32_t nTime)

{

uwTimingDelay = nTime;

while(uwTimingDelay != 0);

}

stm32程序不能延时执行函数,请问问题出在哪呢?谢谢。

timer定时器中断函数贴出来看看,没看到你对time参数进行运算

stm32中Delay()函数延时的时间是怎么计算的

首先取决于你的时钟频率选定为多少。

以24位的SysTick定时器为例,在3.5版本的库函数(该版本简化了对该计时器的配置函数)中,调用函数 SystemInit(); 初始化SysTick计时器为STM32主时钟的8分频,假设主频达到72MHz

则此时计时器的频率为9MHz,即1秒可 向下记数 9000000(9M)次。

f=9MHz,所以周期为T=1/f,即1/9000000。

再调用SysTick_Config(SystemCoreClock / X) (X表示一个数,填入多少就能获得 1/X 秒数)

delay中调用这些便可实现精确计时。

例如

void Delay(vu32 count)

{ 全局变量A = count };

然后再在stm32f10x_it.c 文件中的定义

void SysTick_Handler(void)

{

if(全局变量!=0)

全局变量--;

}

就可以实现计时了。

回答感觉够详细的话就采纳吧~

stm32怎么修改延时没有用,程序始终那么快

stm32可以使用systick定时器来实现延时的功能,不需要这么写,具体可以看一下正点原子开发板的例程或者野火的。

如果非要这么写,也没关系。使用MDK软件设定好当前MCU的时钟频率,使用软件仿真,单独执行自己写的for循环延时,会在左边的寄存器窗口出现具体使用了多少时间,你可以根据这个情况修改for循环里的变量参数。

STM32延时函数问题

首先STM32中没有delay的库函数

你所用的delay函数是属于战舰开发板的源程序 是由原子哥他们写的

你可以去看他们的完整的源代码 你要用delay_ms()这个函数

肯定会有一个函数是delay_init()

他们的延时用的是滴答定时器 systick 所以你必须要对他进行初始化

而我好像没有在你的程序中看到有延时函数的初始化

请问大神,stm32,Systick延时函数怎么写,看看我的哪里错了???

Systick的计数器是24位的

执行到delay函数,就是这里,就不会往下走了,应该是while不对吧,我弄一天了,能不能帮我改一下,感激不尽,我不给他很大的数字,应该不会超出数限

不是超不超的问题

void Delay_us(u32 nus)

{

u32 temp;

SysTick->LOAD=nus*fac_us; //时间加载(即延时多少个时钟周期)

SysTick->VAL=0x00; //清空计数器

SysTick->CTRL=0x01 ; //开始倒数

do

{

temp=SysTick->CTRL;

}

while(temp&0x01&&!(temp&(1<<16)));//等待时间到达

SysTick->CTRL=0x00; //关闭计数器

SysTick->VAL =0X00; //清空计数器

}

或者

void Delay_us(u32 Nus)

{

SysTick->LOAD=Nus*9; //时间加载 72M主频

SysTick->CTRL|=0x01; //开始倒数

while(!(SysTick->CTRL&(1<<16))); //等待时间到达

SysTick->CTRL=0X00000000; //关闭计数器

SysTick->VAL=0X00000000; //清空计数器

}

MDK5对stm32编程为什么延时函数一直没执行?

把箭头中的方框内设置成相应的值即可。

转载请注明出处51数据库 » stm32软件延时函数 stm32延时函数的几种方法

软件
前端设计
程序设计
Java相关