我的程序总结

我的程序总结

ID:37942073

大小:22.10 KB

页数:9页

时间:2019-06-03

我的程序总结_第1页
我的程序总结_第2页
我的程序总结_第3页
我的程序总结_第4页
我的程序总结_第5页
资源描述:

《我的程序总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、关于1602显示很多字母ucharcodecdis1[]={"RedControl"};ucharcodecdis1[]="RedControl";//貌似这样也可以while(cdis1[m]!=''){//显示字符lcd_wdat(cdis1[m]);m++;}Volatile的用法volatile影响编译器编译的结果,指出,volatile变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volat

2、ileinti=10; intj=i; ... intk=i; volatile告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。上面说的很清楚,补充一下,就是例如定义i是定时器的计数值,如果不定义为volatile型数据,如果下面有这个语句i

3、ntk=I;intj=I;在这个程序中编译的时候首先会i所在存储单元中的数据取出来然后送给k,然后程序继续执行,发现又要去除i所在存储单元中的数据,由于编译器发现i的值并没有发生变化,记住是以编译器的角度来看,编译器不会考虑到硬件的变化的,所以编译器就不会去i所在的存储单元将i取出来,而是只会把之前取出的值直接付给j了。想想会导致什么样的后果。这样的话如果使用了这个参数来修饰数据的话就可以防止编译器的自动优化。所以我们发现这个参数多用于修饰寄存器变量#defineMicroWait(t)Onboard_wait(t)这个是允许的NEW关于结构体非常好constSimpleDe

4、scriptionFormat_tSampleApp_SimpleDesc={//注意表示这个参数是个只读变量SAMPLEAPP_ENDPOINT,//intEndpoint;SAMPLEAPP_PROFID,//uint16AppProfId[2];SAMPLEAPP_DEVICEID,//uint16AppDeviceId[2];SAMPLEAPP_DEVICE_VERSION,//intAppDevVer:4;SAMPLEAPP_FLAGS,//intAppFlags:4;SAMPLEAPP_MAX_CLUSTERS,//uint8AppNumInClusters;(c

5、Id_t*)SampleApp_ClusterList,//uint8*pAppInClusterList;SAMPLEAPP_MAX_CLUSTERS,//uint8AppNumInClusters;(cId_t*)SampleApp_ClusterList//uint8*pAppInClusterList;};而//SimpleDescriptionFormatStructuretypedefstruct{byteEndPoint;uint16AppProfId;uint16AppDeviceId;byteAppDevVer:4;byteReserved:4;//AF_V

6、1_SUPPORTusesforAppFlags:4.byteAppNumInClusters;cId_t*pAppInClusterList;byteAppNumOutClusters;cId_t*pAppOutClusterList;}SimpleDescriptionFormat_t;下面是一个非常经典的关于struct的使用方法,通过这个可以优化算法#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)#definePERIPH_BASE((uint32_t)

7、0x40000000)#define__IOvolatile//使用volatile来定义寄存器typedefstruct//我们看到了使用typedef定义了一个结构体{__IOuint32_tCRL;//__IOuint32_tCRH;__IOuint32_tIDR;__IOuint32_tODR;__IOuint32_tBSRR;__IOuint32_tBRR;__IOuint32_tLCKR;}GPIO_TypeDef;通过上面这样的使用就可以不用再一步步的UART的使用__SZ_STM32_C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。