STM32的精确延时
2015-08-21 00:13
495 查看
/*---------------------------------------------------------- 文件名称:systick.c 文件描述:sysTick 系统滴答时钟1us中断函数库,中断时间可自由配置 备注:程序默认使用72M时钟,无分频 -----------------------------------------------------------------*/ #include "delay.h" static __IO u32 TimingDelay; /*----------------------------------------------------------------------- 程序名称:systick Init 程序描述:启动系统滴答定时器 systick 输入参数:无 返回参数:无 备注: 使用此功能之前需要调用此函数,初始化寄存器等参数 ----------------------------------------------------------*/ void SysTick_Init(void) { //SystemFrequency /1000 1ms中断一次 //SystemFrequency /100000 10us中断一次 //SystemFrequency /1000000 1us中断一次 if(SysTick_Config(SystemCoreClock /1000000)) //1us { /*Caputure error*/ while(1); } } /*--------------------------------------------- 程序名称:Delay_us 程序描述:延时nTime us 输入参数:nTime 返回参数:无 备注: 无 -----------------------------------------------*/ void Delay_us(__IO u32 nTime) { TimingDelay = nTime; while(TimingDelay != 0); } /*-------------------------------------------------- 程序名称:TimingDelay_Decrement 程序描述:数字递减到0 输入参数:无 返回参数:无 备注: 需要中断函数SysTick_Handle()中调用 ---------------------------------------------------------*/ void TimingDelay_Decrement(void) { if(TimingDelay != 0x00) { TimingDelay--; } }
在学习的时候发现,延时是错误的,因为这里的要是要依赖于系统的时钟所以在中断函数中要加入
<pre name="code" class="cpp">SysTick_Handle()
/** * @brief This function handles SysTick Handler. * @param None * @retval None */ void SysTick_Handler(void) { <span style="white-space:pre"> </span>TimingDelay_Decrement(); }
相关文章推荐
- spring boot
- PHP中正则表达式学习及应用(三)
- Fabonacci 数列
- java连接数据库时出现如下错误:
- C语言内存分配
- 本人对数据结构的理解,希望对大家有所帮助
- Python:insert排序算法
- 欢迎使用CSDN-markdown编辑器
- Struts2入门示例教程
- 题目:N皇后问题
- 第一百四十天 how can I坚持
- 微信开发相关图书推荐
- 将要和正在读的软件架构书
- android ListView向上滑动隐藏标题,下拉显示标题栏
- 题目:nuts 和 bolts 的问题
- Android开发菜鸟到高手必备的十本畅销书籍
- android ListView向上滑动隐藏标题,下拉显示标题栏
- UVALive - 5906 Smoking gun(差分约束系统+拓扑排序)
- Handler发送Message
- 题目:Maximal Square