STM32 延时函数封装
来源:互联网 发布:阿里健康云药师兼职 编辑:程序博客网 时间:2024/05/02 02:14
/*---------------------------------
延时模块函数
说明:只需在工程中加入delay.c和delay.h
文件,即可用 Delayms(__IO uint32_t nTime);
Delayus(__IO uint32_t nTime)
-----------------------------------*/
#ifndef __DELAY_H
#define __DELAY_H
#include "stm32f10x.h"
/*---------------------------------
描 述:参数1即为1ms,1000即为1s;只有几
us的误差;
-----------------------------------*/
extern void Delayms(__IO uint32_t nTime);
/*---------------------------------
描 述:参数1即为1us,1000即为1ms;只有几
us的误差;
-----------------------------------*/
extern void Delayus(__IO uint32_t nTime);
/*---------------------------------
函数名:延时调整形式的delaynus函数,
描 述:参数1即为1us,1000即为1ms;
-----------------------------------*/
extern void delay_nus(unsigned long n);
/*---------------------------------
函数名:延时调整形式的delaynms函数,
描 述:参数1即为1ms,1000即为1s;
-----------------------------------*/
extern void delay_nms(unsigned long n);
#endif
C 函数
/*---------------------------------
延时模块函数
说明:只需在工程中加入delay.c和delay.h
文件,即可用 Delayms(__IO uint32_t nTime);
Delayus(__IO uint32_t nTime)
-----------------------------------*/
#include"delay.h"
static __IO uint32_t TimingDelay;
/* Private function prototypes -----------------------------------------------*/
/*---------------------------------
函数名:ms延时函数
描 述:参数1即为1ms,1000即为1s;只有几
us的误差;
-----------------------------------*/
void Delayms(__IO uint32_t nTime)
{
while(SysTick_Config(SystemCoreClock/1000));
TimingDelay = nTime;
while(TimingDelay != 0);
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
/*---------------------------------
函数名:us延时函数
描 述:参数1即为1us,1000即为1ms;只有几
us的误差;
-----------------------------------*/
void Delayus(__IO uint32_t nTime)
{
while(SysTick_Config(SystemCoreClock/1000000));
TimingDelay = nTime;
while(TimingDelay != 0);
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
/*---------------------------------
函数名:延时辅助函数
描 述:
-----------------------------------*/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
/*---------------------------------
函数名:systick的中断函数
描 述:参数1即为1us,1000即为1ms;只有几
us的误差;
-----------------------------------*/
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
/*---------------------------------
函数名:延时调整形式的delaynus函数,
描 述:参数1即为1us,1000即为1ms;
-----------------------------------*/
void delay_nus(unsigned long n)
{
unsigned long j;
while(n--)
{
j=12;
while(j--);
}
}
/*---------------------------------
函数名:延时调整形式的delaynms函数,
描 述:参数1即为1ms,1000即为1s;
-----------------------------------*/
void delay_nms(unsigned long n)
{
while(n--)
delay_nus(1030);
}
- STM32 延时函数封装
- STM32 自定义延时函数
- STM32 延时函数解析
- stm32中的延时函数
- Lua封装延时执行函数
- STM32中通过普通延时函数来精确延时
- STM32 SysTick定时器做延时函数
- STM32 延时函数高级用法分析
- STM32菜鸟之初始化函数以及延时函数
- stm32 使用正点原子delay延时函数,主函数延时失效
- 利用STM32的SysTick设计精确延时函数
- STM32 SysTick定时器常见问题及延时函数的实现
- STM32精确延时
- STM32-I2C-appcat延时
- STM32-I2C-appcat延时
- STM32延时us程序
- STM32 粗延时总结
- STM32的精确延时
- jQuery遮罩代码
- apue学习第五天——UNIX标准及实现(第二章)
- Linux callstack 使用 [User space]
- yii+mySQL使用过程中问题总结
- 创业概念:跑马拉松和创业的相似之处
- STM32 延时函数封装
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- 大端字节顺序(big end)、小端字节顺序(little end)
- C++实现apriori算法
- button上的图片和文字偏移量排版
- Android 复习笔记之图解Fragment
- ListView下拉刷新,上拉加载更多
- curl
- DW学习笔记:form表单的创建