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

[复制链接]
3162|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 | 显示全部楼层
这个不是更麻烦一些么
gaochy1126 发表于 2013-6-28 14:20 | 显示全部楼层
水平还达不到的。
1988020566 发表于 2013-6-28 23:58 | 显示全部楼层
这个寄存器查看起来也不容易。
waitingf 发表于 2013-6-29 10:30 | 显示全部楼层
很受用的说
someonewho 发表于 2013-6-29 10:54 | 显示全部楼层
学习了
justbybing 发表于 2013-6-29 11:01 | 显示全部楼层
都是很管用的技巧
specialfrin 发表于 2013-6-29 11:29 | 显示全部楼层
都是很好的开发技巧
someontime 发表于 2013-6-29 11:37 | 显示全部楼层
很强大
haidixibahe 发表于 2013-6-29 12:13 | 显示全部楼层
都是很好的技巧
chao11yue 发表于 2013-6-29 12:24 | 显示全部楼层
很受用
engtafanzhuan 发表于 2013-6-30 00:22 | 显示全部楼层
最喜欢分享技巧的帖子
xichengmadia 发表于 2013-6-30 00:38 | 显示全部楼层
原来如此
beiwaroad 发表于 2013-6-30 00:43 | 显示全部楼层
这个办法好强悍
taihezhibanh 发表于 2013-6-30 00:58 | 显示全部楼层
好技巧 都很不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

519

主题

4194

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部