STM32白话文教程(二)延迟函数

我们只需要配置好delay.c delay.h
今后使用延迟,只需要用delay_ms(此处填毫秒数)即可

这个其实没啥必要出教程。
主要是之前踩了一个坑,我用的那套例程
"stm32f10x_it.h"里重定义了systick_hanlder()函数

当时好像是导致烧了程序没反应卡死,要不就是报了重定义的错,绕了个弯路。

就篇就这样水了吧~

/*-----------------------
文件名称:delay.c
-------------------------*/
#include "delay.h"

static __IO u32 TimingDelay;

void delay_Init(void)
{
	 // SystemFrequency / 1000     1ms中断一次
	 // SystemFrequency / 1000000  1us中断一次
	 
	if (SysTick_Config(SystemCoreClock / 1000000))	// 采用1us一次是因为更精准 你当然可以选择除不同系数
	{ 
		/* Capture error */ 
		//如果初始化失败会进入此处 成功返回0 不会进入
		//一般不会错的 错了你也解决不了 你删了if花括号里的东西也没问题
		while (1);
	}
}

void Delay_us(__IO u32 nTime)    //单位10us
{ 
	TimingDelay = nTime;	
	while(TimingDelay != 0);
}

/*-------------------------------------------------------------------------------
程序名称:TimingDelay_Decrement
程序描述:数字递减直到0  
备    注:需要在中断函数SysTick_Handler()中调用
---------------------------------------------------------------------------------*/

void TimingDelay_Decrement(void)
{
	if (TimingDelay != 0x00)
	{ 
	TimingDelay--;
	}
}

记得把"stm32f10x_it.h"里的systick_hanlder注释掉!

void SysTick_Handler(void)
{
	TimingDelay_Decrement();
}
/*-----------------------
文件名称:Delay.h
-------------------------*/
#ifndef __delay_H
#define __delay_H

#include "stm32f10x.h"

#define delay_ms(x) delay_us(1000*x)//单位ms

void delay_Init(void);

#endif
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值