void Delay(__IO u32 nCount)最简单的延时函数

来源:互联网 发布:通达信源码论坛 编辑:程序博客网 时间:2024/05/21 18:37

最开始学习单片机的时候,无论是51还是STM32等,都会在流水灯等示例中见到延时函数,刚开始我就弄不明白,我今天认真的剖析一下.

首先是函数体

void Delay(__IO u32 nCount){ for(; nCount != 0; nCount--);  } 

首先根据C语言的规范可以知道这是一个没有返回值的带形式参数的函数.

C语言中的函数使用规范如下:

return_type function_name( parameter list ){   body of the function}


所以可以知道第一个是:函数返回的数据类型

第二个是:函数名

第三个是:参数

第四个是:函数主体

所以再来看这个延时函数就比较容易理解了:

void Delay(__IO u32 nCount){ for(; nCount != 0; nCount--);  } 

这个延时函数没有返回值,函数名称是Delay,同时函数的参数部分中的_IO是类型修饰符;u32是数据类型,同等于uint_32_t同等于unsigned int型

函数的主体是for循环递减,大致的意思是32位的非负int型数据nCount一直递减,递减到0,就产生了一个不太精确的延时函数.

其中_IO u32可以看作一个数据类型;具体可以在相关MCU头文件,例如"stm32f10x.h"中查看定义.大致等同32位无符号int类型

使用的时候若

void Delay(5000)
则就是5000自减到0为止




原创粉丝点击