1.指向函数的指针
指针不但能指向变量、字符串、数组,还可以指向函数曲播卖货的技巧语言 。在C语言中允许将函数的入口地址赋值给指针。如许就能够通过指针来拜候函数。
还能够把函数指针当成参数来传递曲播卖货的技巧语言 。函数指针能够简化代码,削减主播修改代码时的工做量。通过接下来的讲解介绍各人会体味到那一点的。
/*函数没人指针简单讲解
*通过指向函数的指
*针挪用前期比力两手法个数口才
*大小的法式
# includeiostream
usingnamespacestd;
/*比力详细嵌入式语言函数技巧声明介绍*/
intmax( int, int) ;
/*指向函数的指针声明(此刻指针未指向任何一个函数)*/
直播int(*test)( int, int);
前期产品intmain( intargc, char* argv[])
intlargernumber;
/*将max函数的入口地址视频赋值给
*函数指针test
test=max;
/*通过指针口诀test挪用函数max实
*现比力大小
直播largernumber=(*test)( 1, 2);
coutlargernumber endl;
return0;
intmax( inta, intb)
return(ab?a:b);
通过正文各人应该很容易理解,函数指针其实和变量指针、字符串指针差不多的曲播卖货的技巧语言 。若是各人理解了那个小法式,那么理解起下面那个有关Nand flash的源代码就好多了。
typedefstruct{
void(*nand_reset)( void);
套路void(*wait_idle)( void);
前期是什么void(*nand_select_chip)( void);
void(*nand_deselect_chip)( void);
void(*write_cmd)( intcmd);
void(*write_addr)( unsignedintaddr);
产品一款unsignedchar(*read_data)( void) ;
}t_nand_chip;
statict_nand_chip nand_chip;
/* NAND Flash操做的总入口, 它们将挪用S3C2410或三部曲S3C2440的响应函数 */
staticvoidnand_reset( void) ;
staticvoidwait_idle( void) ;
人员配置staticvoidnand_select_chip( void) ;
staticvoidnand_deselect_chip( void) ;
staticvoidwrite_cmd( intcmd) ;
staticvoidwrite_addr( unsignedintaddr) ;
staticunsignedcharread_data( void) ;
/* S3C2410的NAND Flash处置内搭函数毛呢 */
口诀介绍staticvoids3c2410_nand_reset( void) ;
一款视频大全staticvoids3c2410_wait_idle( void) ;
staticvoids3c2410_nand_select_chip( void) ;
做说话staticvoids3c2410_nand_deselect_chip( void) ;
三部曲手法staticvoids3c2410_write_cmd( intcmd) ;
服装staticvoids3c2410_write_addr( unsignedintaddr) ;
staticunsignedchars3c2410_read_data;
/* S3C2440的NAND Flash处置函数 */
staticvoids3c2440_nand_reset( void) ;
staticvoids3c2440_wait_idle( void) ;
staticvoids3c2440_nand_select_chip( void) ;
文字staticvoids3c2440_nand_deselect_chip( void) ;
staticvoids3c2440_write_cmd( intcmd) ;
流程staticvoids3c2440_write_addr( unsignedintaddr) ;
卖货staticunsignedchars3c2440_read_data( void) ;
/* 初始化流程NAND Flash */
voidnand_init( void)
# defineTACLS 0
# defineTWRPH0 3
# defineTWRPH1 0
/* 判断是S3C2410仍是S3C2440 */
if((GSTATUS1 == 0x32410000) || (GSTATUS1 == 0x32410002))
nand_chip.ip语言nand_reset = s3c2410_nand_reset;
nand_chip.wait_idle = s3c2410_wait_idle;
nand_chip.nand_select_chip = s3c2410_nand_select_chip;
nand_chip.术直播间nand_deselect_chip = s3c2410_nand_deselect_chip;
nand_chip.服装write_cmd = s3c2410_write_cmd;
nand_chip.口才直播write_addr = s3c2410_write_addr;
nand_chip.read_data = s3c2410_read_data;
/* 使能ipNAND Flash控造器, 初始化ECC, 制止片选, 设置时序 */
s3c2410nand-常用NFCONF = ( 1 15)|( 1 12)|( 1 11)|(TACLS 8)|(TWRPH0 4)|(TWRPH1 0);
else
nand_chip.Cnand_reset = s3c2440_nand_reset;
nand_chip.wait_idle = s3c2440_wait_idle;
nand_chip.nand_select_chip = s3c2440_nand_select_chip;
nand_chip.nand_deselect_chip = s3c2440_nand_deselect_chip;
nand_chip.write_cmd = s3c2440_write_cmd;
# ifdefLARGER_NAND_PAGE
nand_chip.款write_addr = s3c2440_write_addr_lp;
# else
nand_chip.毛呢write_addr = s3c2440_write_addr;
# endif
nand_chip.主播read_data = s3c2440_read_data;
/* 设置直播间3个时序产品 */
s3c2440nand-要点NFCONF = (TACLS 12)|(TWRPH0 8)|(TWRPH1 4);
/* 使能NAND Flash控造器, 初始化ECC, 制止做片选 */
s3c2440nand-NFCONT = ( 1 4)|( 1 1)|( 1 0);
/* 复位人员配置NAND Flash */
nand_reset;
那段代码是用于操做Nand Flash的一段源代码曲播卖货的技巧语言 。起首我们看到起头定义了一个构造体,里面放置的满是函数指针。他们ip期待被赋值。然后是定义了一个那种构造体的变量nand_chip。
然后是即将操做的函数声明曲播卖货的技巧语言 。那些函数将会被其他黑色文件的函数挪用。因为在那些函数里一般都只要一条语句,就是挪用构造体的函数指针。接着往下看,是针对两种架构的函数声明。然后在nand_init函数中对nand_chip停止赋值,那也就是我们刚刚讲过的,将函数的入口地址赋值给指针。
如今nand_chip已经被赋值了曲播卖货的技巧语言 。若是我们要对Nand停止读写操做,我们只需挪用nand_chip.read_data或者nand_chip.write_cmd等等函数。那是比力便利的一点,另一点,此代码具有很强的移植性,若是我们又用到了一种芯片,我们就不需要改动整篇代码,只需在nand_init函数中增加对新的芯片的判断,然后给nand_chip赋值即可。所以我说函数指针会使代码具有可移植性,易修改性。
写的超赞曲播卖货销售的技巧语言 ,博主很服气^_^
2.C语言操做存放器衣服
在嵌入式开发中,常常要常用操做存放器是什么,对存放器停止写入,读出等等操做曲播卖货的技巧语言 。每个存放器都有本身固有的地址,通过C语言拜候那些地址就变得尤为重要。
#三部曲常用语 defineGSTATUS1 (*(volatile unsigned int *)0x560000B0)
在那里,直播卖货的技巧语言要点,我们举一个例子曲播卖货的技巧语言 。那是一个形态存放器的宏定义。起首,通过unsigned int我们可以晓得,该存放器是32位的。因为要制止法式施行过程中间接从cache中读取数据,所以用volatile停止润色。
/* NAND FLASH (see S3C2410 manual chapter 6) */
typedefstruct{
S3C24X0_REG32 NFCONF;
S3C24X0_REG32 NFCMD;
S3C24X0_REG32 NFADDR;
S3C24X0_REG32 NFDATA;
S3C24X0_REG32 NFSTAT;
S3C24X0_REG32 NFECC;
} S3C2410_NAND;
要点staticS3C2410_NAND * s3c2410nand = (S3C2410_NAND *) 0x4e000000;
volatileunsignedchar*p = ( volatileunsignedchar*)s3c2410nand-前期口诀NFSTAT;
有时候,你会看到如许一种情况的赋值曲播卖货的技巧语言 。其实那和我们刚刚讲过的差不多。只不外那里是在定义了指针的同时对指针停止赋值。那里起首定义告终构体S3C2410_NAND,里面全数是32位的变量。
又定义了那种构造体类型的指针,且指向0x4e000000那个地址,也就是此刻s3c2410nand指向了一个现实存在的说话物理地址曲播卖货的技巧语言 。s3c2410nand指针拜候了NFSTAT变量,但我们要的是它的地址,而不是它地址上的值,卖货直播口才技巧文字。所以用取NFSTAT地址,如许再强迫转换为unsigned char型的指针,赋给p,就能够间接通过p来给NFSTAT赋值了。
3.常见存放器位操做# defineGPFCON (*(volatile unsigned long *)0x56000050)
黑色GPFCON =~ ( 0x1 3);
三部曲常用语GPFCON |= ( 0x1 3);
连系我们刚刚所讲的口才,起首宏定义存放器,如许我们可以间接给它赋值曲播卖货的技巧语言 。位操做中,我们要学会法式第2行中的,给目的位清0,那里是给bit3清0。第3行则是给bit3置1。
免责声明:本文来源收集,免费传达常识,版权归原做者所有曲播卖货的技巧语言 。如涉及做品版权问题,请联络我停止删除。
电机原理动图合集
工程师必备:串口通信的直播根本常识
100个动图曲播常见卖货的技巧语言 ,进修PLC控造和传感器原理
GitHub上一位老外的嵌入式C编码标准
操纵PLC来实现套路简单的搬运动做
PID控造算法若何通过C语言和梯形图C实现曲播卖货的技巧语言 ?
陀螺仪的没人工做原理