delay_ms 函数 该函数是用来延时指定的 ms 的,其参数 nms 为要延时的毫秒数。 该函数有使用 OS 和不使用 OS 两个版本: 首先介绍不使用 OS 的时候,实现函数如下: //延时 nms //nms:要延时的 ms 数 void delay_ms(u16 nms) { u32 i; for(i=0;i< nms;i++) delay_us(1000); } 该函数其实就...
每次循环需要5个指令周期,重复12000次就是大约60000个指令周期。也就是说对于我的平台和编译环境而言,这个软延时的初值应当是14400而不是12000。
#ifndef __DELAY_H#define__DELAY_H#include"stm32f4xx.h"voidDelay_Init(void);voiddelay_us(intnus);voiddelay_ms(intnms);voiddelay_s(intns);#endifdelay.c #include"delay.h"intmy_us =21;//在21MHZ下,计21个数,用1usintmy_ms =21000;//在21MHZ下,计21000个数,用1msvoidDelay_Init(void)...
首先使用OS: //延时nms//注意nms的范围//SysTick->LOAD为24位寄存器,所以,最大延时为://nms<=0xffffff*8*1000/SYSCLK//SYSCLK单位为Hz,nms单位为ms//对72M条件下,nms<=1864voiddelay_ms(u16 nms) { u32 temp; SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)SysTick->VAL ...
void delay_ms(u16 nms) { u32 temp; SysTick-》LOAD=(u32)nms*fac_ms; //时间加载(SysTick-》LOAD为24bit) SysTick-》VAL =0x00; //清空计数器 SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do { temp=SysTick-》CTRL;
void delay_ms(volatile unsigned long nms) { //SYSTICK分频--1ms的系统时钟中断 if (SysTick_Config(SystemFrequency/1000)) { while (1); } time_delay=nms;//读取定时时间 while(time_delay); SysTick->CTRL=0x00; //关闭计数器 SysTick->VAL =0X00; //清空计数器 ...
//延时 nms,会引起任务调度 //nms:要延时的 ms 数 //nms:0~65535 void delay_ms(u32 nms){ i...
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //开启SYSTICK #else #endif } 主函数中调用delay毫秒延时函数 /** * @brief 延时毫秒(ms)函数 * * @param nms 需要延时多少毫秒 * * @return void */ voiddelay_ms(u16 nms) { u32 i;
time_delay=nms;//读取定时时间 while(time_delay);SysTick->CTRL=0x00; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } //延时nus void delay_us(volatile unsigned long nus){ //SYSTICK分频--1us的系统时钟中断 if (SysTick_Config(SystemFrequency/1000000)){ while (1);} time_...
voiddelay_nms(unsignedintn) //Nms延时函数 { unsignedinti=0; for (i=0;i<n;i++) delay_1ms(); } /*---*/ 为了您的安全,请只打开来源可靠的网址 打开网站取消 来自:http://hi.baidu.com/goby2004/blog/item/ab080c9407f34440d1135e9d.html©2022 Baidu |由 百度智能云 提供计算服务 | 使用...