(&htim1) < us); // 等待计数完成 HAL_TIM_Base_Stop(&htim1); // 停止定时器 } void Delay_ms(uint32_t ms) { while (ms--) { Delay_us(1000); // 调用微秒延时 } } int main(void) { HAL_Init(); Timer1_Init(); while (1) { // 使用延时函数 Delay_ms(1000); // 延时1秒...
单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ms( )。 1.普通延时法 这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,不过要做的比较精准还是要下一番功夫。代码如下,重点掌握微秒级的延时,毫秒级的延时可以直接通过HAL库提供的HAL_Delay()函数...
1//微秒级的延时2voiddelay_us(uint32_t delay_us)3{4volatileunsignedintnum;5volatileunsignedintt;678for(num =0; num < delay_us; num++)9{10t =11;11while(t !=0)12{13t--;14}15}16}17//毫秒级的延时18voiddelay_ms(uint16_t delay_ms)19{20volatileunsignedintnum;21for(num =0; num...
voiddelay_us(uint32_tnus){uint32_ttemp;SysTick->LOAD=RCC_Clocks.HCLK_Frequency/1000000/8*nus;SysTick->VAL=0X00;//清空计数器SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源do{temp=SysTick->CTRL;//读取当前倒计数值}while((temp&0x01)&&(!(temp&(1<<16)));//等待时间到达Sys...
delay_us 函数 这个函数是用来指定us的,其参数nus为延时的微妙数。 代码语言:javascript 复制 //延时 nus//nus:要延时的 us 数.//nus:0~190887435(最大值即 2^32/fac_us@fac_us=22.5)voiddelay_us(uint32_t nus){uint32_t ticks;uint32_t told,tnow,tcnt=0;uint32_t reload=SysTick->LOAD;//...
定时器相关配置程序都由STM32CubeMX帮助我们生成了,我们主要来编写一下微秒级延时函数。 代码语言:javascript 复制 voiddelay_us(uint32_t us){// Set timer period for desired delay in microseconds__HAL_TIM_SET_AUTORELOAD(&htim2,us-1);//定时器响应时间为period*定时器频率HAL_TIM_Base_Start(&htim2...
void delay(u16 num) { u16 i,j; for(i=0;i for(j=0;j<0x800;j++); } eg:delay(50); 第二个延时函数: void Delayms(u16 ms) { u16 i,j; u8 k; for(i=0;i for(j=0;j<0x0500;j++) k++; } 第三个延时函数: static u8 fac_us=0;//us延时倍乘数 ...
本文带大家配置定时器写一个us级延时函数。 一、cubeMX配置 定时器配置 二、代码解析 //微秒延时 void Delay_us(uint16_t us) { uint16_t differ = 0xffff-us-5; __HAL_TIM_SET_COUNTER(&htim1,differ); //设定TIM1计数器起始值 HAL_TIM_Base_Start(&htim1); //启动定时器 while(differ < 0x...
delay_us(1000); > 上述工程源码仓库:https://github.com/strongercjd/STM32F207VCT6/tree/master/02-Template 2、定时器中断 定时器具有很高的精度,我们可以配置定时器中断,比如配置1ms中断一次,然后间接判断进入中断的次数达到精确延时的目的。这种方式精度可以得到保证,但是系统一直在中断,不利于在其他中断中调用此...
检验Delay_us执行时间中用到的GPIO(gpio.h、gpio.c)的配置: #ifndef __GPIO_H #define __GPIO_H #include "stm32f10x.h" #define LOW 0 #define HIGH 1 /* 带参宏,可以像内联函数一样使用 */ #define TX(a) if (a) GPIO_SetBits(GPIOB,GPIO_Pin_0); ...