STM32白话文教程延迟函数
Posted 404detective
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于STM32白话文教程延迟函数的主要内容,如果未能解决你的问题,请参考以下文章
STM32白话文教程内置按键模块外接按键检测 三句话让你玩明白按键 水银倾斜模块
STM32H7的DSP教程第41章 FIR滤波器的群延迟(重要)
STM32F429的DSP教程第41章 FIR滤波器的群延迟(重要)