打印

C语言中可以使用以下的技巧来开发驱动程序

[复制链接]
2167|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2012-4-5 23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
volatile变量:操作CPU内memory mapping register的方法就是使用C语言的指针,为避免相关程序被最佳化,(例如连续三行程序“*a=1;”,就会被C  compiler的最佳化功能变成一行),必须将形态设为“volatile”。如下
volatile unsigned int*xxx_register=0x_300024;

//0x300021、0经300020、0x300024是CPUR的memory mapping Register
//以下的运算是将第4位设为1
//
*(volatile unsygned char*)0x300021|=0x10;
*(volatile unsygned char*)0x300020|=0x10;

//对缓存器0x300024连续设值,因为变量形态设定为volatile
//所以对xxx_register的操作不会被最佳化
//
*xxx_register=0x00ABCDEF;
*xxx_regiser=0x12345678[/code]

相关帖子

沙发
xieyue1975| | 2013-6-26 10:01 | 只看该作者
受用了

使用特权

评论回复
板凳
jinsanfeng1| | 2013-6-26 14:30 | 只看该作者
疲劳试验机

jnjsf17.com

使用特权

评论回复
地板
gaochy1126| | 2013-6-28 14:19 | 只看该作者
这个不是更麻烦一些么

使用特权

评论回复
5
gaochy1126| | 2013-6-28 14:20 | 只看该作者
水平还达不到的。

使用特权

评论回复
6
1988020566| | 2013-6-28 23:58 | 只看该作者
这个寄存器查看起来也不容易。

使用特权

评论回复
7
waitingf| | 2013-6-29 10:30 | 只看该作者
很受用的说

使用特权

评论回复
8
someonewho| | 2013-6-29 10:54 | 只看该作者
学习了

使用特权

评论回复
9
justbybing| | 2013-6-29 11:01 | 只看该作者
都是很管用的技巧

使用特权

评论回复
10
specialfrin| | 2013-6-29 11:29 | 只看该作者
都是很好的开发技巧

使用特权

评论回复
11
someontime| | 2013-6-29 11:37 | 只看该作者
很强大

使用特权

评论回复
12
haidixibahe| | 2013-6-29 12:13 | 只看该作者
都是很好的技巧

使用特权

评论回复
13
chao11yue| | 2013-6-29 12:24 | 只看该作者
很受用

使用特权

评论回复
14
engtafanzhuan| | 2013-6-30 00:22 | 只看该作者
最喜欢分享技巧的帖子

使用特权

评论回复
15
xichengmadia| | 2013-6-30 00:38 | 只看该作者
原来如此

使用特权

评论回复
16
beiwaroad| | 2013-6-30 00:43 | 只看该作者
这个办法好强悍

使用特权

评论回复
17
taihezhibanh| | 2013-6-30 00:58 | 只看该作者
好技巧 都很不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝