void Delay(

xiaoxiao2021-02-28  34

最开始学习单片机的时候,无论是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为止

转载请注明原文地址: https://www.6miu.com/read-684791.html

最新回复(0)